经验之谈—自定义tabbar(继承于UITabBar)

时间:2021-02-11 18:08:43
  • 自定义tabbar一般来说有两种方式,一种是继承于系统的UITabBar,一种是继承与UIView的tabbar。
  • 我们现在来看一下继承与UITabBar这种情况中需要注意的一些细节。其实继承与UITabBar我们无非是想修改一下tabbar中的子控件的frame或者是添加子控件等。
  • 我们接下来添加一个按钮到自定义的tabbar上。
  • 注意的地方:我们先打印一下看看UITabBar里面存在的子控件:
    经验之谈—自定义tabbar(继承于UITabBar)

  • 我们可以看出,这里打印出了除UITabBarButton之外的两个控件:UITabBarBackgroundView和UIImageView。

  • 从尺寸我们就能很明显的看出。UITabBarBackgroundView就是这个tabbar的背景图片,然后UIImageView就是上面的那一根线。那么在自定义控件设置frame的时候,就不能直接拿出下标或者self.subviews.count。来获得子控件的个数了。要进行判断了:
for (UIView *child in self.subviews)
    {
        Class class = NSClassFromString(@"UITabBarButton");
        if ([child isKindOfClass:class])
        {
            //设置frame的代码
        }

    }

因为这个UITabBarButton是一个私有的,所以我们通过上面这个方法来进行判断一下,再设置我们的frame,就去除了刚刚那两个控件的干扰。