joh*_*doe 15 ios autolayout uistackview
我正在使用Storyboard创建一个布局,底部包含一个UITableView和一个UIView.我正在使用UIStackView并垂直播放它们.我希望UITableView占据80%的高度,UIView(页脚)占20%.我正在使用UIStackView的Fill Proportionally选项,甚至在Xcode预览中它看起来不错,但是当应用程序运行时它无法正确呈现.这是我想要的样子:
以下是它运行时的样子:
想法?
Mil*_*sáľ 19
您需要设置一个显式约束,使tableView.height比视图大小大4倍.它们没有固有的内容大小,因此stackView不会"知道"如何正确填充空间.
此外,将分发模式设置为.fill,因为.fillProportionally使用内在内容大小来确定正确的分布(摘自docs):
案例填充比例
堆栈视图调整其排列视图大小的布局,以便它们沿堆栈视图的轴填充可用空间.视图根据堆栈视图轴的内在内容大小按比例调整大小.
使用约束我们明确地设置大小,而不是使用内在内容大小 - 因此.fillProportionally不起作用.在这种情况下,我假设直接stackView返回的使用值view.intrinsicContentSize.但是,约束不会改变view.intrinsicContentSize.
如果您要在代码中执行此操作,则可以使用以下代码执行此操作:
tableView.heightAnchor.constraint(equalTo: myView.heightAnchor, multiplier: 4).isActive = true
Run Code Online (Sandbox Code Playgroud)
在故事板中,控制拖动tableView到myView并选择Equal Heights:
然后选择创建的约束并设置适当的乘数:
Gih*_*han 10
在情节提要的文档大纲控件中,从顶视图拖动到堆栈视图,然后选择等高。现在转到“大小”检查器,您应该会看到约束。双击它,并将乘数设置为0.2。然后更新框架。
保持堆栈视图分布为填充。
控制从view2到view1的拖动以创建相等的高度约束。
转到约束并将乘数设置为0.2。
| 归档时间: |
|
| 查看次数: |
11919 次 |
| 最近记录: |