如何使单个UIStackView的行高动态调整为填满整个屏幕?

时间:2019-07-16 18:48:14

标签: ios swift xcode storyboard uistackview

我的布局如下:

enter image description here

我希望Stack View充满整个屏幕。我希望绿色的View表现得像上面的行和底部视图之间的空间。绿色行应具有最小高度(例如20个点),并且应根据设备的高度调整其自身的高度,以填满整个屏幕。如果设备的高度较小,则布局应可滚动(我正在使用Scroll View)。

注意:底部的圆圈代表左侧的“空白区域”,因为布局没有完全填充(实际上是内容View的背景色)。内容View不应显示。

“菜单堆栈视图”具有以下属性:

enter image description here enter image description here

1 个答案:

答案 0 :(得分:1)

  • 绿色视图的高度限制应为<select [(ngModel)]="selectedValue" (change)="onChange($event.target.value)"> <option *ngFor="let owner of listschemas" [value]="owner"> {{owner}} </option> </select>
  • StackView的宽度约束应等于ScrollView的宽度
  • StackView的高度约束应等于ScrollView的高度,>= 20
  • StackView应该在所有4面都限制在ScrollView上

应该这样做!


编辑:

刚刚看到您有一个Priority: 750持有StackView ...

您实际上并不需要它,因此您可以:

删除该视图,并让StackView作为滚动视图的“根”视图,或者

  • 绿色视图的高度限制应为UIView
  • StackView应该在所有四个方面都限制在>= 20
  • UIView的宽度约束应等于ScrollView的宽度
  • UIView的高度约束应等于ScrollView的高度,UIView

编辑2:

如果您在contentView / StackView Height约束上看到带有Priority: 750的答案,它可以工作,但并不总是立即在IB / Storyboard中更新(更改“ View As:设备”时)。将其设置为Priority: 250 在运行时有效,在维护Storyboard中的布局方面做得更好。

这里是示例情节提要。它具有两个视图“匹配”控制器-一个带有的“内容视图”和一个没有的:

750