【发布时间】:2019-01-02 21:28:41
【问题描述】:
我正在使用 Interface Builder 创建一个应用程序。我想要一组标签和相应的 UISwitches 排列,使所有标签都出现在屏幕的左半边,而开关在右边。开关应与标签对齐。
为此,我尝试使用垂直堆栈视图,其中嵌入了多个水平堆栈视图(每个标签/开关对一个水平堆栈视图)。为了让标签和开关正确对齐,我将它们中的每一个都设置在一个空白的 UIView 中,并将它们(开关和标签)放在相应的 UIView 上。然后将 Stack Views 设置为“居中”对齐和“均匀填充”分布。
通过此设置,我得到了适当的视觉布局,但即使每个父视图都设置了“启用用户交互”,也无法激活 UISwitches。如果我将开关直接移动到水平堆栈视图中(而不将其嵌入到空白 UIView 中)它可以正常工作,但我无法让它以我想要的方式居中。
我怎样才能拥有我想要的布局并且仍然有功能性 UISwitches?
我见过this question,但似乎没有一个答案能解决我的问题。
复制:
- 创建一个新的视图控制器
- 添加垂直堆栈视图 (VSV)
- 将 VSV 的约束设置为与 View Controller 的根视图等高和等宽,并水平和垂直居中
- 将 VSV 的对齐方式设置为“居中”,将分布设置为“均等填充”
- 向 VSV 添加 1+ 个水平堆栈视图 (HSV)
- 将每个 HSV 设置为“居中”对齐和“均等填充”分布
- 为每个 HSV 添加两个空白 UIView
- 对于每个 HSV,将其限制为与 VSV 等宽
- 对于每个 HSV,将 UILabel 添加到第一个 UIView 并将 UISwitch 添加到第二个 UIView
- 对于每个 UILabel 和 UISwitch,将其限制为在其父 UIView 上水平和垂直居中
当您运行应用程序时,布局是完美的。但是,即使每个后续的父视图都启用了用户交互,也无法与任何 UISwitches 进行交互。
【问题讨论】:
标签: ios interface-builder