IOS:UITabbar 项目单击一次又一次,它正在减少IOS 7 中的UITabbar 按钮项目大小

Posted

技术标签:

【中文标题】IOS:UITabbar 项目单击一次又一次,它正在减少IOS 7 中的UITabbar 按钮项目大小【英文标题】:IOS:UITabbar item click again and again it is reducing the UITabbar button item size in IOS 7 【发布时间】:2014-07-24 09:08:48 【问题描述】:

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

【问题讨论】:

我在这里回答了一个类似的问题。似乎是同一个问题——ios Tab Bar icons keep getting larger ...基本上是由于不平衡的图像插入 请查看此链接::***.com/questions/22452582/… 问题也同样请帮助我。 【参考方案1】:

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

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

您已经为顶部和右侧指定了插图,但是:

    如果你设置了一个top inset,为了平衡它,你需要将它的负片设置为bottom inset 如果你设置了一个右插图,为了平衡它,你需要将它的负片设置为左插图

因此,不要使用像 (24,0,0,6) 这样的图像插入,而是使用平衡的图像插入,比如 UIEdgeInsetsMake(24,-6,-24,6)

这样做应该可以保护您的 tabBarItem 图像在每次点击时都不会受到攻击。


如果这不符合您的要求,请重新设计您的 tabBarItem 图像,以便您可以有平衡插图或......根本没有插图。

【讨论】:

如果我把你给的相同尺寸,标签栏项目很大,它会超出屏幕。如果你不介意看看这个链接::***.com/questions/22452582/… 也面向同样的问题。谢谢 @user3840618 :基本上你想从顶部和右侧推送图像但是图像插入不平衡,你每次都会出错。无论如何...图像尺寸是多少?我认为如果你编辑图像并在图像编辑器中正确对齐它,然后,只有这样,你会更好地在你的应用程序中使用它。 这样做有什么意义。通过这样做,您不会更改任何内容,因此最好将其保留为 0,0,0,0 这个bug在iOS11修复了 我仍然在 iOS 11 上看到这个。【参考方案2】:

这是我在UITabBarControllerUITabBar 中遇到的错误的解决方法。如果我在选择 UITabBarItem 后点击它一次,图标会缩小。我想做的是禁用触摸。 UITabBarItem 只有isEnabled 的设置,如果我将其设置为false,它会变灰...不是我想要的。

我使用了this answer 的派生词来解决这个问题。使用带有 3 个标签的 UITabBarController,打印 tabBarController.subviews,我看到了 3 个 UITabBarButtons 和一个 UIBarBackground。 UIBarBackground的frame的起源一直是(0, 0),放在排序数组的最前面,所以我真的不需要知道subview是什么,只需要知道“它在哪里”,会不会一直在。 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

【讨论】:

+1。最终使用了您的解决方案,因为我需要更大的图像尺寸并且平衡图像插图并没有给出预期的结果

以上是关于IOS:UITabbar 项目单击一次又一次,它正在减少IOS 7 中的UITabbar 按钮项目大小的主要内容,如果未能解决你的问题,请参考以下文章

活动加载一次又一次

在父组件的 onClick 上一次又一次地添加子组件,每次使用新的道具到子组件

异常结果集耗尽一次又一次发生

使用循环一次又一次地迭代

为啥 CoreBluetooth 一次又一次地发现相同的外设?

Push sharp:一次又一次地发送相同的消息