我在这里使用了Tabbar视图控制器,添加了5个项目并给定了图片边距(24,0,0,6)。
所有按钮图片都是在xib中添加的[在Bar项下-> 图像]。请帮忙看一下。
谢谢。
在这里补充一个相似的答案: iOS Tab Bar icons keep getting larger
我不确定这是否是iOS7的 bug,但我注意到图片插图需要平衡。
您已经为顶部和右侧指定了插图,但:
因此,不要像 (24,0,0,6)
这样拥有图片插图,请使用平衡的图片插图,例如 UIEdgeInsetsMake(24,-6,-24,6)
。
这样做应该可以保护您的 tabBarItem
图像不会在每次点击时损坏。
如果这不符合您的要求,请重新设计您的 tabBarItem
图像,以便您可以拥有平衡插图或者...没有插图。
这是我遇到的一个与 UITabBarController
的 UITabBar
相关的 bug 的解决方法。如果我在选择了一个 UITabBarItem
后再次轻触它,图标会变小。我想要做的是禁用触摸。 UITabBarItem
只有一个 isEnabled
设置,如果我将其设置为 false
,它会变灰色... 这不是我想要的。
UITabBarController
中,通过打印tabBarController.subviews
,我看到了3个UITabBarButtons
和一个UIBarBackground
。 UIBarBackground的框架起点始终是(0, 0)
,将其放在排序数组的前面,因此我不需要知道子视图是什么,只需要知道“它在哪里”以及它是否总是存在。 UIBarBackground
始终位于按frame.minX
排序的tabBarController.subviews
数组的前面,因此我只需要从前面将其删除即可。
这就是扩展的样子:
extension UITabBarController {
var buttonViews: [UIView] {
var tabBarButtons = tabBar.subviews.sorted(by: {$0.frame.minX < $1.frame.minX})
tabBarButtons.removeFirst()
return tabBarButtons
}
}
struct
,这样我就不必记住选项卡的名称了。struct TabBarItem {
static let firstTab = 0
static let secondTab = 1
static let thirdTab = 2
}
最后,如何使用:
在 viewDidAppear
中(而不是 viewDidLoad
),添加以下行以禁用您不想要的但不希望变灰的 UITabBarItem
:
tabBarController?.buttonViews[TabBarItem.firstTab].isUserInteractionEnabled = false
viewWillDisappear
中,按照以下方式重新启用选项卡:tabBarController?.buttonViews[TabBarItem.firstTab].isUserInteractionEnabled = true