- 自定义tabbar一般来说有两种方式,一种是继承于系统的UITabBar,一种是继承与UIView的tabbar。
- 我们现在来看一下继承与UITabBar这种情况中需要注意的一些细节。其实继承与UITabBar我们无非是想修改一下tabbar中的子控件的frame或者是添加子控件等。
- 我们接下来添加一个按钮到自定义的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,就去除了刚刚那两个控件的干扰。