我在这里拿了Tabbar viewcontroller,我添加了5项和.I给出了图像昆虫是(24,0,0,6)。 所有按钮图像都添加在xib中[在条形项目下 - >图像]请帮忙。 感谢。
答案 0 :(得分:7)
在这里添加类似的答案: iOS Tab Bar icons keep getting larger 子>
不确定这是否是iOS7错误,但我注意到图像插入需要平衡。
您已为top和right指定了insets但是:
因此,不要使用像(24,0,0,6)
这样的图像插入,而是使用平衡的图像插入,例如UIEdgeInsetsMake(24,-6,-24,6)
这样做可以保护您的tabBarItem
图像免受每次点击的影响。
如果这不符合您的要求,请重新设计tabBarItem
图片,以便您可以拥有平衡插图或者根本没有插图。
答案 1 :(得分:0)
以下是我在UITabBarController
UITabBar
遇到的错误的解决方法。如果我选择了UITabBarItem
一次后,图标会缩小。我想做的是禁用触摸。 UITabBarItem
只有isEnabled
的设置,如果我将其设置为false
,则会将其设置为灰色...而不是我要查找的内容。
我使用this answer的衍生物来弄明白。如果UITabBarController
有3个标签,则打印tabBarController.subviews
,我看到3 UITabBarButtons
和UIBarBackground
。 UIBarBackground框架的起源总是(0, 0)
,把它放在排序数组的前面,所以我真的不需要知道子视图是什么,只是"它在哪里是"以及它是否会永远存在UIBarBackground
始终位于按tabBarController.subviews
排序的frame.minX
数组的前面,所以我只需将其从前面删除。
这是扩展程序的样子:
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