控制器:UITabBarController

1、UITabBarController的使用步骤
初始化UITabBarController
设置UIWindow的rootViewController为UITabBarController
根据具体情况,通过addChildViewController方法添加对应个数的子控制器

2、UITabBarController的子控制器

UITabBarController添加控制器的方式有2种
添加单个子控制器
- (void)addChildViewController:(UIViewController *)childController;

设置子控制器数组
@property(nonatomic,copy) NSArray *viewControllers;

3、UITabBar
如果UITabBarController有N个子控制器,那么UITabBar内部就会有N个UITabBarButton作为子控件

如果UITabBarController有4个子控制器,那么UITabBar的结构大致如下图所示
这里写图片描述

4、UITabBarButton
这里写图片描述

二、UITabBarController
如果系统的 UITabBarButton 不能满足我们的开发 , 比如 下列这种效果:
这里写图片描述

有两种三种方法去实现它:

第一种: 在我们 给TabBarController 添加子控制器的时间 ,在 第三的位置 加入一个 UIViewController ,需要放button的位置 撑开 ,然后定义一个 属性button,

@property  (nonatomic , weak)   UIButton *centerButton ;

- (void)customBtn{

    if ( _centerButton == nil) {
        _centerButton = [[UIButton alloc]init];
    }

    //长度
    CGFloat w = self.tabBar.bounds.size.width / self.childViewControllers.count;
    CGRect rect = CGRectMake(0, 0, w, self.tabBar.bounds.size.height);

    //设置frmae
    _centerButton.frame = CGRectOffset(rect, 2 * w, 0);
    [_centerButton setImage:[UIImage imageNamed:@"tabbar_compose_icon_add"] forState:UIControlStateNormal];
     [_centerButton setImage:[UIImage imageNamed:@"tabbar_compose_icon_add_highlighted"] forState:UIControlStateHighlighted];

    //设置背景图片
    [_centerButton setBackgroundImage:[UIImage imageNamed:@"tabbar_compose_button"] forState:UIControlStateNormal];
     [_centerButton setBackgroundImage:[UIImage imageNamed:@"tabbar_compose_button_highlighted"] forState:UIControlStateHighlighted];

    //设置一个监听事件
    [_centerButton addTarget:self action:@selector(clickAdd) forControlEvents:UIControlEventTouchUpInside];

    [self.tabBar addSubview:_centerButton];
}

注意 custom的调用位置 :
1、- (void)viewDidLayoutSubviews

2、- (void)viewWillAppear:(BOOL)animated

第二种方式

第二种方法: 
1、自定义 整个 TabBar  ,利用  layoutSubviews 这个  方法去设置每一个button的 frame ,把原来  view的 self.tabBar 移除 ,替换成我们定义的tabBar 

2、在创建控制器的时间 把自定义那个 button添加到TabBar上,在根据按钮的不同的tag值去实现 代理,点击切换不同控制器
- (void)addTabBarButton:(UITabBarItem *)item
{
    //创建按
    TSZTabBarButton *button = [TSZTabBarButton buttonWithType:UIButtonTypeCustom];
    //添加
    [self addSubview:button];
    //设置图片
    [button setBackgroundImage:item.image forState:UIControlStateNormal];

    [button setBackgroundImage:item.selectedImage forState:UIControlStateSelected];

    //点击添加单击时间
    [button addTarget:self action:@selector(clickButton:) forControlEvents:UIControlEventTouchDown];
    //默认选中第0个按钮
    NSInteger count = self.subviews.count;
   
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值