繁体   English   中英

调整UIStackView控件内的UIView高度

[英]Adjusting UIView Height Inside UIStackView Control

我在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)]>"

  1. 首先,您需要在cell上添加UIStackView 在此输入图像描述

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

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

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

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

  6. green-UIView添加为pink UIView 在此输入图像描述

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

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

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

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

在此输入图像描述

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

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

Stackviews最有用的时候

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

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

在原型细胞之外

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

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

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

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

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

我试图调整包含UIStackView的UIView的大小,并且约束正在破坏。 我正在改变UIView的高度约束在0到66之间,具体取决于是否有相关信息显示堆栈视图正在显示。

我能够通过删除视图内堆栈视图的顶部和底部约束来修复断裂约束,而是将其设置为垂直居中。 这导致我的表格视图中滚动更加平滑。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM