iOS在UITabBar中更改UITabBarButton的框架

时间:2012-12-18 15:18:31

标签: ios ipad uitabbarcontroller uitabbar uitabbaritem

在我的应用中,我有一个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,只留下我的标签的一小部分“可触摸”。 (下图中框架周围有边框)

frame smaller than tab image

要尝试解决此问题,请在我的子信息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的高度仍然可以吸引大部分的接触。

2 个答案:

答案 0 :(得分:4)

加载后UITabBarController视图的布局可能会发生变化:可以添加其他UITabBarItem,用户可以切换到横向。

在iOS 6之前,没有办法配置复杂的布局。由于UITabBar是一个非常古老的类,因此最有可能在layoutSubviews方法中进行工作。

您可以继承UITabBar并覆盖所述方法,但是如果你走得那么远,你可能想要考虑创建自己的标签栏,最后它只是一个UIView,只有一些UIButton秒。

答案 1 :(得分:0)

与底层的UITabBarButtons有类似的问题。我通过设置UITabBar"项目定位"解决了这个问题。属性为"填写"。

enter image description here