IOS: uitabar项目点击一次又一次它正在减少uitabar按钮项目的大小在ios7



我在这里使用了Tabbar视图控制器,我添加了5个项目,我给图像昆虫是(24,0,0,6)。所有按钮图像都添加在xib[在栏项下->image],请帮助。谢谢。

在这里添加一个类似的答案:iOS标签栏图标越来越大

不确定这是否是iOS7的错误,但我注意到图像插入需要平衡。

您已经指定了顶部和右侧的insert,但是:

  1. 如果你设置了顶部插入,为了平衡它,你需要将它的负值设置为底部插入
  2. 如果你设置了一个右插入,为了平衡它,你需要将它的负值设置到左边插入

因此,与其使用(24,0,0,6)这样的图像插入,不如使用UIEdgeInsetsMake(24,-6,-24,6)这样的平衡图像插入

这样做可以保护您的tabBarItem图像免受每次点击的破坏。


如果这不符合您的要求,然后重新设计您的tabBarItem图像,以便您可以有平衡插入或…

这是我在UITabBarControllerUITabBar中遇到的一个错误的解决方案。如果我在选中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

最新更新