自定义TabBar
先自定义一个UITabBarController,为了方便跳转与设定属性,借助系统的TabBarController的功能,但是要移除内部的控件然后自己添加一个View和多个按钮。
首先要移除已有的TabBarItem,通过判断是否是TabBarItem,但是TabBarItem是私有类,不让直接判断。
因此通过判断父类类型来检查。
要得到这些控件,需要在viewWillAppear方法中:
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
NSLog(@"%d",self.tabBar.subviews.count);
for (UIView *chind in self.tabBar.subviews) {
NSLog(@"%@",chind.superclass);
}
}
查看打印可以发现,TabBarButtonItem的父类是UIControl,而UITabBar的父类是UIView。
2015-03-08 16:36:41.244 myWeibo[4832:140039] 5
2015-03-08 16:36:41.245 myWeibo[4832:140039] UIView
2015-03-08 16:36:41.245 myWeibo[4832:140039] UIControl
2015-03-08 16:36:41.245 myWeibo[4832:140039] UIControl
2015-03-08 16:36:41.245 myWeibo[4832:140039] UIControl
2015-03-08 16:36:41.245 myWeibo[4832:140039] UIControl
注意,通过isKindOfClass方法,可以判断多态性,例如TabBarButtonItem继承自UIControl,那么使用这个方法判断是否是UIControl,会返回真。
- (void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
for (UIView *chind in self.tabBar.subviews) {