自定义UITabBar

自定义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一致了。

你可能感兴趣的:(自定义UITabBar)