自定义tabbar一般来说有两种方式,一种是继承于系统的UITabBar,一种是继承与UIView的tabbar。 我们现在来看一下继承与UITabBar这种情况中需要注意的一些细节。其实继承与UITabBar我们无非是想修改一下tabbar中的子控件的frame或者是添加子控件等。 我们接下来添加一个按钮到自定义的tabbar上。

注意的地方:我们先打印一下看看UITabBar里面存在的子控件:
tabbar

我们可以看出,这里打印出了除UITabBarButton之外的两个控件:UITabBarBackgroundView和UIImageView。<喎"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCrTTs9+0587Sw8e+zcTcutzD98/UtcS/tLP2oaNVSVRhYkJhckJhY2tncm91bmRWaWV3vs3Kx9XiuPZ0YWJiYXK1xLGzvrDNvMaso6zIu7rzVUlJbWFnZVZpZXe+zcrHyc/D5rXExMfSu7j5z9+ho8THw7TU2tfUtqjS5b/YvP7J6NbDZnJhbWW1xMqxuvKjrL7NsrvE3NaxvdPEw7P2z8Kx6rvy1d9zZWxmLnN1YnZpZXdzLmNvdW50oaPAtLvxtcPX07/YvP61xLj2yv3By6Gj0qq9+NDQxdC2z8HLo7oNCjxwcmUgY2xhc3M9"brush:java;"> for (UIView *child in self.subviews) { Class class = NSClassFromString(@"UITabBarButton"); if ([child isKindOfClass:class]) { //设置frame的代码 } }

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