我通过设置每个项目的图像创建了一个简单的自定义标签栏,如下所示:
UITabBar *tabBar = self.tabBarController.tabBar;
UITabBarItem *item0 = [tabBar.items objectAtIndex:0];
UITabBarItem *item1 = [tabBar.items objectAtIndex:1];
UITabBarItem *item2 = [tabBar.items objectAtIndex:2];
[item0 setFinishedSelectedImage:[UIImage imageNamed:@"activity_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"activity.png"]];
[item1 setFinishedSelectedImage:[UIImage imageNamed:@"agenda_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"agenda.png"]];
[item2 setFinishedSelectedImage:[UIImage imageNamed:@"settings_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"settings.png"]];
虽然效果很好,但我注意到我的标签栏下方有一个黑色空白区域
我的图片高度为 44 像素,但我想我必须以某种方式更改标签栏的高度。
最佳答案
tabBar 本身是 49px,它在你的图像后面呈现为黑色(可能在 [UITabBar layoutSubviews]
中)。然后你的图像被渲染在上面。偏移的原因是因为您提供的图像太大,UITabBar 需要 30x30px 图标,而不是整个 UITabBarItem 的图片。
这里有一些尝试:
- 仅提供一个 30x30 像素的图标,而不是整个标签按钮
- 在选项卡项上设置图像后,试试这个:
[项目 setImageInsets:UIEdgeInsetsMake(6, 0, -6, 0)];//玩 insets 直到它正确呈现
- 继承 UITabBar 并覆盖
layoutSubviews
以首先调用super
,然后根据需要重新定位图像。不推荐,它可能会在未来的 iOS 版本中损坏。
关于ios - 设置 UITabBar 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10680111/