在我的应用中,我有一个UITabBarController
,我在AppDelegate
中提供自定义选定/未选择的图片,如下所示:
UIImage *selectedImage = [UIImage imageNamed:@"home-tab-selected"];
UIImage *unselectedImage = [UIImage imageNamed:@"home-tab"];
UITabBar *tabBar = tabController.tabBar;
UITabBarItem *item1 = [tabBar.items objectAtIndex:0];
[item1 setFinishedSelectedImage:selectedImage withFinishedUnselectedImage:unselectedImage];
我的图像是100x100,比普通的标签栏项目大得多。一切都运作良好,我的图像放置得很好,看起来很棒。
我遇到的问题是底层UITabBarButton
的框架仍然是76x48,只留下我的标签的一小部分“可触摸”。 (下图中框架周围有边框)
要尝试解决此问题,请在我的子信息UITabBarController
viewDidLoad
中,浏览每个UITabBarButton
,并按如下方式设置框架:
for (UIView* subView in self.tabBar.subviews)
{
if ([subView isKindOfClass:NSClassFromString(@"UITabBarButton")])
{
[subView setFrame:CGRectMake(subView.frame.origin.x, subView.frame.origin.y, 100, 100)];
}
}
在我这样做之后,我记录了帧并且它们确实发生了变化 - 但是我的标签栏中的框架永远不会改变 - 我仍然只能看到并且可以触摸较小的红色框。
这是因为Apple不允许您更改这些框架,还是我在这里做错了什么?
任何帮助都已经过了!谢谢!
编辑:
最后,我最终使我的标签图像变小了。我发现70px的高度仍然可以吸引大部分的接触。
答案 0 :(得分:4)
加载后UITabBarController
视图的布局可能会发生变化:可以添加其他UITabBarItem
,用户可以切换到横向。
在iOS 6之前,没有办法配置复杂的布局。由于UITabBar
是一个非常古老的类,因此最有可能在layoutSubviews
方法中进行工作。
您可以继承UITabBar
并覆盖所述方法,但是如果你走得那么远,你可能想要考虑创建自己的标签栏,最后它只是一个UIView
,只有一些UIButton
秒。
答案 1 :(得分:0)
与底层的UITabBarButtons有类似的问题。我通过设置UITabBar"项目定位"解决了这个问题。属性为"填写"。