自定义UITabBar,想在系统tabBar基础上添加UIButton之类控件的话,可以通过kvc替换掉controller的tabBar:
[self setValue:tabBar forKeyPath:@"tabBar"];
在自定义UITabBar中layoutSubviews方法中布局控件。
但细心的同学会发现tabBar上子控件的响应范围超出了控件的frame,尤其在tabBar上控件较少的情况下。
如上图tabBarItem的frame为红色区域,但是整个绿色框内都会响应点击。
具体原因本人还没弄清楚,但还是有方法解决这个问题的:修改tabBar的itemPositioning属性。
Use UITabBarItemPositioningCenter to force the items to center with a default width (or the itemWidth, if set).
所有我们设置itemWidth为self.bounds.size.width / n,再设置itemPositioning为UITabBarItemPositioningCentered,控件的响应范围就和frame一致了。