我正在使用 Storyboard 创建一个由 UITableView 和底部的 UIView 组成的布局。我正在使用 UIStackView 并垂直播放它们。我希望 UITableView 占据高度的 80%,UIView(页脚)占据 20%。我正在使用 UIStackView 的按比例填充选项,即使在 Xcode 预览中它看起来不错,但当应用程序运行时它无法正确渲染。这是我想要的样子:
这是它运行时的样子:
Ideas?
您需要设置显式约束以使 tableView.height 比视图大小大 4 倍。它们没有内在的内容大小,所以stackView
不“知道”如何正确填充空间。
另外,将分发模式设置为.fill
, 因为.fillProportionally
使用内在内容大小来确定适当的分布(摘自docs https://developer.apple.com/documentation/uikit/uistackviewdistribution):
案例按比例填充
一种布局,其中堆栈视图调整其排列视图的大小,以便它们沿着堆栈视图的轴填充可用空间。视图根据其沿堆栈视图轴的内在内容大小按比例调整大小。
使用约束,我们显式设置大小,而不是使用内在内容大小 - 因此.fillProportionally
不起作用。我假设在这种情况下stackView
使用返回的值view.intrinsicContentSize
直接地。但约束不会改变view.intrinsicContentSize
.
如果您要在代码中执行此操作,则可以使用以下命令来执行此操作:
tableView.heightAnchor.constraint(equalTo: myView.heightAnchor, multiplier: 4).isActive = true
在故事板中,控制从tableView
to the myView
并选择Equal Heights
:
然后选择创建的约束并设置适当的乘数:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)