IOS:UITabbar项目一次又一次地点击它会减少IOS 7中的UITabbar按钮项目大小

时间:2014-07-24 09:08:49

标签: ios iphone objective-c

我在这里拿了Tabbar viewcontroller,我添加了5项和.I给出了图像昆虫是(24,0,0,6)。 所有按钮图像都添加在xib中[在条形项目下 - >图像]请帮忙。 感谢。

2 个答案:

答案 0 :(得分:7)

在这里添加类似的答案: iOS Tab Bar icons keep getting larger

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

您已为top和right指定了insets但是:

  1. 如果你设置一个顶部插图,为了平衡它,你需要将它的负数设置为底部插图
  2. 如果您设置右侧插图,为了平衡它,您需要将其负片设置为左侧插图
  3. 因此,不要使用像(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 UITabBarButtonsUIBarBackground。 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