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

时间:2014-10-10 12:00:24

标签: ios objective-c xcode autolayout

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

我该怎样摆脱它? 贝娄有一个例子。

enter image description here

enter image description here

故事板上是否有按钮选项?夹在一起?

6 个答案:

答案 0 :(得分:16)

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

使用自动布局,您可以按编程方式执行操作:使用某些约束设置按钮,然后当您决定隐藏按钮时,删除不需要的约束。它灵活而强大,但不是初学者最简单的方法。

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

enter image description here

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

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

[self.button removeFromSuperview];

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

答案 1 :(得分:3)

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

您可以在情节提要画布右下角的“自动布局”工具栏中找到堆栈视图的图标。

Stack View Button

答案 2 :(得分:2)

针对上述情况的更好方法 - 您无需设置任何自动布局或框架:)

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

  1. UITableViewCellSelectionStyle设为None

  2. 此处所有单元格的按钮背景相同

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

  4. 当您想要隐藏按钮时,只需将其从阵列中删除即可。

答案 3 :(得分:0)

你刚刚把它隐藏起来。 您必须根据需要设置框架。 要么 您可以设置autolayout。

答案 4 :(得分:0)

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

答案 5 :(得分:0)

  1. 您可以通过编程方式添加按钮 - >你将有阵列 Btns和将数组添加到视图控制器的方法。
  2. 您可以使用约束并在将其隐藏为0时设置第2个按钮的高度约束,但在这种情况下所有按钮都应与约束连接。