美文网首页
自定义UITabBarController思路及注意事项

自定义UITabBarController思路及注意事项

作者: 举个栗子wow | 来源:发表于2017-04-19 10:12 被阅读24次

    思路

    1.我们需要分析一下都要做什么事情:首先,我们需要自定义自己的按钮并替换原生,这样我们就可以在按钮上想怎么玩就怎么玩了,然后我们需要把自己的按钮点击事件和TabBarController的选择当前的子VC的事件关联在一起,最后进行调试,保证和原生效果一样;
    2.那么从自定义按钮开始,这个很好定义,继承UIButton就可以了,我们可以重写下面的方法规定btn上的lable和imageview:

    #pragma mark 设置lab和imageview位置
    - (CGRect)imageRectForContentRect:(CGRect)contentRect {
        return CGRectMake((contentRect.size.width - 26) / 2, 6, 26, 26);
    }
    
    - (CGRect)titleRectForContentRect:(CGRect)contentRect {
        return  CGRectMake(contentRect.size.width * .15, 30, contentRect.size.width * .7, 20);
    }
    
    

    具体的位置可以自己调整,需要小红点之类的也可以自己扩展;
    3.然后是移除原生上面的按钮,官方并没有提供这个接口,我们可以遍历TabBarController上的控件进行删除,这段关键的代码如下:

    // 1 移除TabbarButton
        for (UIView *child in self.tabBar.subviews) {
            if ([child isKindOfClass:[UIControl class]]) {
                [child removeFromSuperview];
            }
        }
    

    4.最后我们需要关联事件,即点击btn触发TabBarController选择对应的VC;
    5.进行调试,确保和原生效果一样;

    注意事项

    不可以先移除btn添加btn然后再去设置TabBarController.viewControllers,这是因为当你去设置TabBarController.viewControllers时,内部方法会去创建自己的btn,如果把这一步放到最后会造成自定义btn被原生覆盖。这一点我们观察层级时可以验证。

    相关文章

      网友评论

          本文标题:自定义UITabBarController思路及注意事项

          本文链接:https://www.haomeiwen.com/subject/kueczttx.html