我在这里使用了Tabbar视图控制器,我添加了5个项目,我给图像昆虫是(24,0,0,6)。所有按钮图像都添加在xib[在栏项下->image],请帮助。谢谢。
在这里添加一个类似的答案:iOS标签栏图标越来越大
不确定这是否是iOS7的错误,但我注意到图像插入需要平衡。
您已经指定了顶部和右侧的insert,但是:
- 如果你设置了顶部插入,为了平衡它,你需要将它的负值设置为底部插入
- 如果你设置了一个右插入,为了平衡它,你需要将它的负值设置到左边插入
因此,与其使用(24,0,0,6)
这样的图像插入,不如使用UIEdgeInsetsMake(24,-6,-24,6)
这样的平衡图像插入
这样做可以保护您的tabBarItem
图像免受每次点击的破坏。
如果这不符合您的要求,然后重新设计您的tabBarItem
图像,以便您可以有平衡插入或…
这是我在UITabBarController
的UITabBar
中遇到的一个错误的解决方案。如果我在选中UITabBarItem
后点击一次,图标就会缩小。我想做的是禁用触摸。UITabBarItem
只有isEnabled
的设置,如果我将其设置为false
,它就会变灰…不是我想要的。
我用这个答案的导数来求出它。使用带有3个标签的UITabBarController
,打印tabBarController.subviews
,我看到了3个UITabBarButtons
和一个UIBarBackground
。UIBarBackground的frame的原点总是(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
标题>