调整UIStackView控件内的UIView高度

joh*_*doe 20 ios swift uistackview

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

在此输入图像描述

现在,我想让绿色视图远小于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)]>"
Run Code Online (Sandbox Code Playgroud)

)

Ale*_*huk 24

  1. 首先,你需要添加UIStackViewcell 在此输入图像描述

  2. 需要为您添加约束 UIStackView 在此输入图像描述

  3. 调整你的 UIStackView 在此输入图像描述

  4. 拖放UILabel到你的UIStackView 在此输入图像描述

  5. 然后拖放UIView到你的UIStackView 在此输入图像描述

  6. green-UIView像子视图一样添加pink UIView 在此输入图像描述

  7. 现在您可以添加几个约束 green-UIView 在此输入图像描述 在此输入图像描述

  8. 现在您可以在模拟器或设备上运行app 在此输入图像描述 在此输入图像描述

    请注意,我没有添加任何约束UILabel.


Rob*_*ack 17

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

在此输入图像描述

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

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

Stackviews最有用的时候

  1. 你想补偿设备方向的变化,
  2. 想把很多东西堆叠在一起,
  3. 想要创建一个包含许多元素的非常复杂的布局,但是它具有可以重复的模式,或者
  4. 只是希望能够删除一个元素或添加一个元素与大小调整自身

该列表并非详尽无遗,但应该让您了解何时以及为何使用堆栈视图.

在原型细胞之外

这种行为是微不足道的.您只需在视图上设置约束即可: 在此输入图像描述"

然后在stackview上设置约束: 在此输入图像描述

希望这会有所帮助,欢呼!