自定义UITabBar--实现类似新浪微博中间的发送按钮

来源:互联网 发布:肯尼迪遇刺真相知乎 编辑:程序博客网 时间:2024/04/28 13:06

之前公司提出一个需求,让点击tabBar上中间的一个按钮然后发送一些内容,效果就像新浪微博中中间的发送按钮。可由于公司有其他的功能需求所以这个需求也一直没有真正地下达。最近看一个网上的视频教程,发现有一个自定义的tabBar正好和公司之前的需求吻合,于是就将代贴出来了。大笑

代码:

首先自定义个tabBar,这个tabBar是继承自UITabBar的。然后将系统的tabBar替换

- (void)setTabBarButton{

    

    LSTabBar * tabBar = [[LSTabBaralloc] init];

    

    [selfsetValue:tabBar forKeyPath:@"tabBar"];

}


在自定义的tabBar中调整各个tabBarButton的位置,并添加一个按钮作为tabBar上的发送按钮.

- (UIButton *)plushBtn{

    

    if (_plushBtn ==nil) {

        UIButton * plustBtn = [UIButtonbuttonWithType:UIButtonTypeCustom];

        _plushBtn = plustBtn;

        [_plushBtnsetBackgroundImage:[UIImageimageNamed:@"tabBar_publish_icon"]forState:UIControlStateNormal];

        [_plushBtnsetBackgroundImage:[UIImageimageNamed:@"tabBar_publish_click_icon"]forState:UIControlStateHighlighted];   // 高亮状态

        [_plushBtnsizeToFit];  //自适应图片的大小

        // 只添加一次

        [selfaddSubview:_plushBtn];

    }

    return_plushBtn;

}


- (void)layoutSubviews{

    

    [superlayoutSubviews];

    NSInteger num =self.items.count +1// tabBarButton的个数

    CGFloat btnW =self.frame.size.width / num;

    CGFloat btnH =self.frame.size.height;

    // 调整tabBatButton的位置

    NSInteger i =0;

    for (UIView * tabBarButtonin self.subviews) {

        if ([tabBarButtonisKindOfClass:NSClassFromString(@"UITabBarButton")]) {

            

            if (i ==2) {   //如果是第三个按钮则右移一个位置

                i += 1;

            }

            tabBarButton.frame =CGRectMake(btnW*i, 0, btnW, btnH);

            i ++;

        }

    }

    self.plushBtn.center =CGPointMake(self.frame.size.width * 0.5, self.frame.size.height * 0.5);

    

}


我还有一个疑问,为什么要使用自定义tabBar,然后在tabBar中调整tabBarButton的位置呢?
我可以在tabBarController上添加五个(以微博为例)子控制器(正好tabBar上tabBarButton的位置不用调整了),然后在中间的位置上添加一个自己定义的按钮作为发送按钮。这个发送按钮添加的时间很关键,如果是在viewDidLoad中添加就会被系统的tabBatButton所覆盖,无法进行点击,可如果在viewDidAppear方法中添加自定义的发送按钮则可覆盖系统的tabBarButton(中间位置),这样就可以点击中间的发送按钮了。这样同样实现了我们所想要的效果。不知这种方法可取吗?如有人看了我的疑问且有好的回答,愿写下您的回答。谢谢!

1 0
原创粉丝点击