尽管存在限制,但按钮超出了 parent 视图
Button exceeds the parent view despite contraints
我有一个项目,其中两个水平堆栈视图打包在一个(主)垂直堆栈视图中。每个水平堆栈视图都包含一个按钮和一个开关。
我设置了主 StackView 的前导和尾随约束。问题是当按钮的标题太长时,开关会被推出屏幕限制。
这是它在 Interface Builder 中的样子:
下面是它在模拟器中的样子:
按钮和开关之间没有约束,因为每次我将这些元素打包到水平堆栈视图中时,所有约束都将丢失。
我通过指定 约束边距:
创建了约束
我试图找到解决方案 here 但我没有找到。
我很迷茫,我做错了什么?尽管有限制,为什么开关会超出屏幕范围?我是否想念什么是约束?
首先,看起来您的按钮需要是标签。按钮不喜欢有多行内容。如果您出于某种原因需要标签可点击,您可以这样做。
其次,您需要将标签(或按钮)的水平内容压缩阻力优先级降低到749,使其低于开关(默认为750)。这样,他们两个就不会互相争夺位置:switch 会赢,标签会允许自己让位,即使它的文本变大。
话虽如此,我认为您可能会更喜欢不同的底层接口。堆栈视图,尤其是充当嵌入垂直堆栈视图中的类似行的堆栈视图,似乎不太适合您正在做的事情。这是同样的事情,而不是作为 table 视图完成:
我认为这是实现目标的更好方法。 table 视图不必 看起来 像 table 视图;在上面的屏幕截图中,table 视图无法滚动,无法选择其单元格,并且没有单元格分隔符。但是由标签和开关组成的单元格的重复比你正在做的更容易和灵活地实现;将我正在做的事情扩展到更多问题并进行切换是微不足道的,而你正在做的事情要扩大规模并不容易或令人愉快。
我有一个项目,其中两个水平堆栈视图打包在一个(主)垂直堆栈视图中。每个水平堆栈视图都包含一个按钮和一个开关。
我设置了主 StackView 的前导和尾随约束。问题是当按钮的标题太长时,开关会被推出屏幕限制。
这是它在 Interface Builder 中的样子:
下面是它在模拟器中的样子:
按钮和开关之间没有约束,因为每次我将这些元素打包到水平堆栈视图中时,所有约束都将丢失。
我通过指定 约束边距:
创建了约束我试图找到解决方案 here 但我没有找到。
我很迷茫,我做错了什么?尽管有限制,为什么开关会超出屏幕范围?我是否想念什么是约束?
首先,看起来您的按钮需要是标签。按钮不喜欢有多行内容。如果您出于某种原因需要标签可点击,您可以这样做。
其次,您需要将标签(或按钮)的水平内容压缩阻力优先级降低到749,使其低于开关(默认为750)。这样,他们两个就不会互相争夺位置:switch 会赢,标签会允许自己让位,即使它的文本变大。
话虽如此,我认为您可能会更喜欢不同的底层接口。堆栈视图,尤其是充当嵌入垂直堆栈视图中的类似行的堆栈视图,似乎不太适合您正在做的事情。这是同样的事情,而不是作为 table 视图完成:
我认为这是实现目标的更好方法。 table 视图不必 看起来 像 table 视图;在上面的屏幕截图中,table 视图无法滚动,无法选择其单元格,并且没有单元格分隔符。但是由标签和开关组成的单元格的重复比你正在做的更容易和灵活地实现;将我正在做的事情扩展到更多问题并进行切换是微不足道的,而你正在做的事情要扩大规模并不容易或令人愉快。