前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >自定义UITabBar--实现类似新浪微博中间的发送按钮

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

作者头像
用户1451823
发布2018-09-13 16:17:34
6000
发布2018-09-13 16:17:34
举报
文章被收录于专栏:DannyHoo的专栏DannyHoo的专栏

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://cloud.tencent.com/developer/article/1337926

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

代码:

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

  • (void)setTabBarButton{

LSTabBar * tabBar = [LSTabBar alloc init];

    self setValue:tabBar forKeyPath:@"tabBar";

}

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

  • (UIButton *)plushBtn{

if (_plushBtn == nil) {

UIButton * plustBtn = UIButton buttonWithType:UIButtonTypeCustom;

_plushBtn = plustBtn;

        [_plushBtn setBackgroundImage:UIImage imageNamed:@"tabBar_publish_icon" forState:UIControlStateNormal];

        [_plushBtn setBackgroundImage:UIImage imageNamed:@"tabBar_publish_click_icon" forState:UIControlStateHighlighted];    // 高亮状态

        _plushBtn sizeToFit;  // 自适应图片的大小

// 只添加一次

        self addSubview:_plushBtn;

    }

return _plushBtn;

}

  • (void)layoutSubviews{

    super layoutSubviews;

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 * tabBarButton in self.subviews) {

if (tabBarButton isKindOfClass: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(中间位置),这样就可以点击中间的发送按钮了。这样同样实现了我们所想要的效果。不知这种方法可取吗?如有人看了我的疑问且有好的回答,愿写下您的回答。谢谢!

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年09月30日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档