Xcode IB:UIButton 隐藏但仍有按钮空间

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

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

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

[self.button removeFromSuperview];

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

【讨论】:

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

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

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

    UITableViewCellSelectionStyle设置为None

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

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

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

【讨论】:

【参考方案3】:

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

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

【讨论】:

【参考方案4】:

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

【讨论】:

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

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

【讨论】:

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

【讨论】:

约束是按钮的一个属性,对不起,我是 Objective c 的新手 :) 阅读例如techotopia.com/index.php/… 或者更好的开始(2部分)raywenderlich.com/50317/…

以上是关于Xcode IB:UIButton 隐藏但仍有按钮空间的主要内容,如果未能解决你的问题,请参考以下文章

UIButton 在运行时更改尺寸

如何正确自动缩放 UIButton 和标题文本?

uibutton与图像

Xcode如何在按钮上加载图片呢(当然还有文字了)

UIButton 图像在 IB 中看起来不错,但在应用程序上显示时会被拉伸

iPhone 在 IB 中为自定义 UIView 创建 UIButton