调整UIStackView控件内的UIView高度

时间:2015-09-18 16:13:53

标签: ios swift uistackview

我在iOS 9 SDK中使用UIStackView。 stackview的高度为44点。我在StackView中有一个UILabel和UIView,如下所示:

enter image description here

现在,我想让绿色视图远小于44 ..非常像20.我怎么能这样做?

更新:如果没有UIStackView,我会受到限制:

[GT.BubbleView:0x14536610]   (Names: '|':UITableViewCellContentView:0x14536fd0 )>",
    "<NSLayoutConstraint:0x146b7300 GT.BubbleView:0x14536610.trailing == UITableViewCellContentView:0x14536fd0.trailingMargin>",
    "<NSLayoutConstraint:0x146c4000 'UIView-Encapsulated-Layout-Width' H:[UITableViewCellContentView:0x14536fd0(286)]>"

4 个答案:

答案 0 :(得分:24)

  1. 首先,您需要在UIStackView上添加cell enter image description here

  2. 需要为UIStackView添加约束 enter image description here

  3. 调整UIStackView enter image description here

  4. UILabel拖放到UIStackView enter image description here

  5. 然后将UIView拖放到UIStackView enter image description here

  6. green-UIView个子视图添加到pink UIView enter image description here

  7. 现在您可以向green-UIView添加几个约束 enter image description here enter image description here

  8. 现在您可以在模拟器或设备上运行app enter image description here enter image description here

    注意我没有为UILabel添加任何限制。

答案 1 :(得分:17)

如果您想要达到如下所示的20x20平方:

enter image description here

然后你要做的就是在你的绿色视图中添加另一个UIView。使UIView的尺寸为20x20pts。然后将小视图背景更改为绿色,将较大视图的背景更改为清除。

也就是说,这个解决方案并不需要堆栈视图,并且可能会使您的UI过于复杂。我建议只使用autolayout。

时,Stackviews最有用
  1. 您希望弥补设备方向的变化,
  2. 希望将很多东西叠加在一起,
  3. 想要创建一个非常复杂的布局,其中包含许多元素 你可以重复的模式,或
  4. 只是希望能够删除元素或使用大小调整自身添加元素
  5. 该列表并非详尽无遗,但应该让您知道何时以及为何使用堆栈视图。

    原型单元外

    这种行为是微不足道的。您只需在视图上设置约束即可: enter image description here&#39;

    然后在stackview上设置约束: enter image description here

    希望这有帮助,欢呼!

答案 2 :(得分:0)

通过将宽度和高度约束的优先级设置为800或更高,可以轻松修复断裂约束问题。

答案 3 :(得分:0)

我想在这里发布我的答案,以便其他人可以看到,尽管与OP的问题略有不同。

我正在尝试调整包含UIStackView的UIView的大小,并且约束被打破。我正在将UIView的高度限制更改为0到66之间,这取决于是否有相关信息显示堆栈视图正在显示。

我能够通过删除视图内部堆栈视图的顶部和底部约束,并将其设置为垂直居中来修复破坏约束。这样可以使我的表格视图中的滚动更加流畅。