iOS开发之功能模块--关于自定义TabBar条

只上项目中用到的代码:

1、实现重写TabBar的TabBarItem,然后在中间额外加一个按钮。

1 #import <UIKit/UIKit.h>
2
3 @interface BikeTabBar : UITabBar
4
5 @end
 1 #import "BikeTabBar.h"
 2
 3 @interface BikeTabBar ()
 4
 5 //@property (nonatomic,weak)UIButton *centerButton;
 6
 7 @end
 8
 9 @implementation BikeTabBar
10
11
12
13 - (void)layoutSubviews
14 {
15     [super layoutSubviews];
16
17     UIButton *centerButton = [UIButton buttonWithType:UIButtonTypeCustom];
18     [centerButton setImage:[UIImage imageNamed:@"tab_bar_ride0"] forState:UIControlStateNormal];
19     [centerButton setImage:[UIImage imageNamed:@"tab_bar_ride1"] forState:UIControlStateHighlighted];
20     // 一定要记得设置尺寸
21     [centerButton sizeToFit];
22     [self addSubview:centerButton];
23
24     // 获取子按钮总数
25     NSInteger count = self.items.count;
26     CGFloat x = 0;
27     CGFloat y = 0;
28     CGFloat w = self.width / (count + 1);
29     CGFloat h = self.height;
30
31     int i = 0;
32     // 遍历所有的tabBarButton
33     for (UIControl *tabBarButton in self.subviews) {
34         if ([tabBarButton isKindOfClass:NSClassFromString(@"UITabBarButton")]) {
35             if (i == 2) {
36                 i += 1;
37             }
38             x = i * w;
39             //  设置UITabBarButton位置
40             tabBarButton.frame = CGRectMake(x, y, w, h);
41             tabBarButton.tag = i;
42
43             i++;
44
45             // 监听 UIControlEventTouchDownRepeat : 短时间内连续地重复点击
46             //            [tabBarButton addTarget:self action:@selector(tabBarButtonClick:) forControlEvents:UIControlEventTouchDownRepeat];
47             [tabBarButton addTarget:self action:@selector(centerButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
48         }
49     }
50
51     // 设置加号按钮位置
52     centerButton.center = CGPointMake(UIScreenWidth * 0.5, h * 0.5);
53 }
54
55
56 - (void)centerButtonClicked:(UIButton*)sender{
57
58 }
59
60 @end

2、实现修改中间的UITabBarItem的样式,比如大小、位置

这个需求和上面一个需求在用户交互有一个区别,上面自定义的TabBar中间的按钮是额外添加的,不具备UITabBarController的UITabBarItem的本质,在用户交互中,比如选择了第一个Item,然后再点击中间这个额外添加的按钮,那个第一个Item并不会自动切换成未选中的状态。

而对于这第二个个需求,本人一开始觉得要自定义TabBar,其实根本不需要。

时间: 2024-11-03 03:45:12

iOS开发之功能模块--关于自定义TabBar条的相关文章

iOS开发之功能模块--高仿Boss直聘的常用语的开发

首先上Boss直聘的功能界面截图,至于交互请读者现在Boss直聘去交互体验:     项目要高仿Boss直聘的IM常用语的交互功能,居然花费了我前后17个小时完成,这回自己测试了很多遍,代码质量很高,交互很流畅,仿真度也很高,重点综合性的用到了很多东西:runtime.代理传值.block传值.textView的系统通知监听.富文本.自定义封装.本地化增删改等等.其实这些都是基础,重点是功能的交互逻辑或者是业务逻辑的分析,然后正确实现,并经过尽可能多情况的自我测试通过,没有基础Bug,也没有任何

iOS开发之功能模块--Apns推送中的的json格式介绍

在开发向苹果Apns推送消息服务功能,我们需要根据Apns接受的数据格式进行推送.下面接受我在进行apns推送时候总结的一点apns服务接受的Json数据格式 示例 1: 以下负载包含哦一个简单的 aps 字典.它使用字符串而不是字典作为 alert 的值,该负载同样包含了一个自定义的属性数组. { "aps" : { "alert" : "message" },//alert表示推送的消息文本 "parm" : [ &quo

IOS开发之功能模块--给任意的UIView添加点击事件

前言:好久没写博客,今天来一波.我在实际项目开发中,会遇到这样功能需求:我已经搭好了iOS的UI界面,但是很多界面的子View用了UIView,然后这些UIView中用了UILabel和UIImageView,然后接着需求要这些View能够有点击事件,比如一点击就跳转到某个控制器.一开始懵逼了,难道我还要把他们全部改成UIButton,但是UIButton不好添加子View,难道我还要全部自定义一下UIButton,就算自定义好了,在项目已经打好的界面还是要一个个替换,多麻烦.所以就想到通过UI

iOS开发之功能模块--推送之坑问题解决

苹果开发证书中,有一个根证书,根证书可以绑定相关的开发者设备合作开发一个app项目,如果是多人团队一般根证书是由老大搞定和统一管理我们的设备,这时候老大他会用到他电脑的keychain来生成P12文件,然后并把根证书一并给我们用. 但是,开发苹果推送功能的人不一定是老大,比如老大交给我来弄这个推送证书并给app添加推送功能,而生成苹果的推送cer后缀的证书,就当然在我的电脑生成了,当然肯定要通过老大用的那个开发者账号登录苹果官网,并且要下载和app同一个bundle ID一致的推送证书: 下载好

iOS开发之功能模块--高仿Boss直聘的IM界面交互功能

本人公司项目属于社交类,高仿Boss直聘早期的版本,现在Boss直聘界面风格,交互风格都不如Boss直聘以前版本的好看. 本人通过iPhone模拟器和本人真机对聊,将完成的交互功能通过Mac截屏模拟器来录制基本的交互功能. 界面因为动态截图工具本身不完美,截屏失真,所以存在有的部分UI颜色稍微变化了,比如白色稍微变灰暗色,不是项目本身的问题. 因为是本公司项目,不提供源码,只提供交互动态图仅供观赏??. (备注:Boss直聘分为个人端和企业端) 1.基本功能描述: 在个人端,一开始会话列表没有任

iOS开发之功能模块--用runtime给UIView类别拓展PressMenu工具

这是个很有用的列别工具类,在聊天对话框添加和QQ一样的"复制.粘贴.取消"等选项,而且使用起来很方便,只要找到聊天泡泡内部的某个View,比如Label或者背景冒泡的UIImageView,直接add...即可实现下面的效果: 直接上源码: UIView+PressMenu.h 1 #import <UIKit/UIKit.h> 2 3 @interface UIView (PressMenu) 4 @property (strong, nonatomic) NSArray

IOS开发之功能模块--输入框随着键盘的位置移动而移动

废话不多说,先直接上效果图: 先熟悉一下在Cocoa框架中会用到的key键: 然后直接上Demo的源码截图: 看代码之前,补充说一句,Demo中的文本框以及文本框的背后灰色的View是通过storyboard中的autoresizing布局的. 上面源码下载链接: http://pan.baidu.com/s/1jHXD7eQ 密码: uqww 在OC中,通过 transform 属性可以修改对象的平移.缩放比例和旋转角度. 那么就用transform做一个稍微的优化:

iOS开发之功能模块--模糊效果

1.先介绍一个好用的实现模糊效果的框架:https://github.com/YouXianMing/UIImageBlur 2.iOS8 中 UIVisualEffectView 模糊效果的使用 ,能够实时渲染,但是弊端就是iOS7以下不能用.

IOS开发-关于自定义TabBar条

今天在做项目的时候,突然有一个模块需要自定义TabBar条. 在平常很多做项目的时候,都没有去自定义过,大部分都是使用系统自带的.今天整理一个自定义TabBar条的步骤. 首先看下我们最终实现的效果: 首先需要继承UItabBar自定义一个自己的tabBar .h #import <UIKit/UIKit.h> @class THTabBar; @protocol THTabBarDelegate <UITabBarDelegate> @optional - (void)tabBa