【问题标题】:Xcode IB: UIButton hidden but have still buttons spaceXcode IB:UIButton 隐藏但仍有按钮空间
【发布时间】:2014-10-10 12:00:24
【问题描述】:

我的 iPhone 应用程序出现以下问题。 我的 IB 中有 4 个按钮也链接到我的 UIViewController (IBOutlet) 例如,当我用[self.btnAfvalSoorten setHidden:YES]; 隐藏第二个按钮 AfvalSoorten 然后它消失了,这就是我想要的,但是当我在模拟器上调试应用程序时我仍然有按钮空间。

我怎样才能摆脱它? 下面是一个例子。

情节提要上是否有将按钮剪辑在一起的选项?

【问题讨论】:

    标签: ios objective-c xcode autolayout


    【解决方案1】:

    您应该使用自动布局。否则,新屏幕尺寸将是一场噩梦。

    使用自动布局,您可以以编程方式执行您所要求的操作:设置具有特定约束的按钮,然后当您决定隐藏按钮时移除不需要的约束。它灵活而强大,但对于初学者来说并不是最简单的方法。

    一种简单的方法是使用附加约束。例如,如果您有按钮 1、2 和 3(见屏幕截图),并且您打算删除按钮 2,则可以在 3 和 1 之间添加额外的约束:

    该约束的优先级(在我的示例中为 250)应低于其他约束(默认为 1000)。这意味着当按钮 2 就位(具有更高优先级的约束)时,不会应用约束。

    然后,移除按钮而不是隐藏它。

    [self.button removeFromSuperview];
    

    当您隐藏按钮时,布局系统仍会考虑做出决定,这会使布局更加复杂。如果您想保留按钮,请确保它在属性声明中使用strong 修饰符。

    【讨论】:

    • 很好的解决方案,但请注意:如果您打算让它再次可见 (superview.addSubview(button)),它就不起作用。您将失去约束。
    【解决方案2】:

    上述场景的更好方法 - 您不需要设置任何自动布局或框架:)

    使用UITableView 并创建包含UIButtons 的自定义单元格。

    1. 将UITableViewCellSelectionStyle设置为None

    2. 这里所有单元格的按钮背景都相同

    3. 创建一个包含上述按钮标题的数组

    4. 如果您想隐藏按钮,只需将其从数组中删除即可。

    【讨论】:

      【解决方案3】:

      这样做的现代首选方式是使用堆栈视图。 Great tutorial。需要 iOS 9。

      您会在故事板画布右下方的自动布局工具栏中找到堆栈视图的图标。

      【讨论】:

        【解决方案4】:

        你刚刚把它隐藏了。 您必须根据需要设置框架。 或者 您可以设置自动布局。

        【讨论】:

        • 故事板中的自动布局是什么意思,框架呢?
        【解决方案5】:

        也许在 IB 中有一个带有 autoLayout 的解决方案,但我不确定。以编程方式,您可以按顺序将所有按钮添加到数组中。每当您隐藏按钮时,您都会遍历按钮数组,每次找到未隐藏的按钮时,您将框架上的 y 坐标设置为 a 值,然后根据需要增加该值,以便下一个不隐藏将根据最后使用的位置放置。

        【讨论】:

        • 自动布局被检查没有任何反应
        • autolayout 选中意味着您想为您的 xib 使用自动布局,现在自动布局本身不会做任何事情。您只是说您将为视图提供自动布局类型顺序以管理对象位置。您需要添加并使用约束。没有什么是自动的。
        【解决方案6】:
        1. 您可以通过编程方式添加按钮 -> 您将拥有数组 Btns 和向视图控制器添加数组的方法。
        2. 您可以使用约束并在将第二个按钮隐藏为 0 时将其设置为高度约束,但在这种情况下,所有按钮都应与约束连接。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-02-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-16
        • 1970-01-01
        • 2012-04-21
        • 1970-01-01
        相关资源
        最近更新 更多