UITableviewCell 中的 UIStackview 按比例填充需要不正确的帧
Posted
技术标签:
【中文标题】UITableviewCell 中的 UIStackview 按比例填充需要不正确的帧【英文标题】:UIStackview fill proportionally in a UITableviewCell takes incorrect frame 【发布时间】:2017-02-09 11:23:10 【问题描述】:在 UIStackview 中添加比例填充设置不会让视图正确拉伸。这是预期的行为吗?
【问题讨论】:
【参考方案1】:按比例填充的分布类型适用于固有内容大小。
因此,如果我们的垂直堆栈(高度为 600)视图有 2 个视图,ViewA(固有内容高度 200)和 ViewB(固有内容高度 100),堆栈视图会将它们的大小调整为 ViewA(高度 400)和 ViewB(高度200)。
在 IB 中,所见即所得。 拖动以更改帧是没有用的。只需运行应用程序。
只有当子视图以某种方式获得固有/约束高度时,您才会看到预期的行为。
它在 IB 中的外观这里顶部堆栈视图的视图被限制为最小高度 10 和 30,即比例 1:4。
我们真正得到的 顶部堆栈视图是我们期望的样子。以 1:4 的比例查看高度。底部的比例为 1:1,出乎意料。
【讨论】:
【参考方案2】:您可以通过创建自定义视图来解决此问题
class CustomHeightView: UIView
var height = 1.0
override public var intrinsicContentSize: CGSize
return CGSize(width: 0.0, height: height)
将 UIView 的类更改为 CustomHeightView
所以在 Controller 中为 UIViews 创建一个 outlet
@IBOutlet weak var header_one: CustomHeightView!
@IBOutlet weak var header_two: CustomHeightView!
然后在你的 viewDidLoad 中设置你想要的比例
override func viewDidLoad()
super.viewDidLoad()
header_one.height = 1.8
header_two.height = 1.2
【讨论】:
以上是关于UITableviewCell 中的 UIStackview 按比例填充需要不正确的帧的主要内容,如果未能解决你的问题,请参考以下文章
更改 UITableViewCell 中的对象也更改了重用 UITableViewCell 的对象
确定 UITableViewCell 中的 UIButton
UITableViewCell 事件中的 UIButton 不起作用
UITableViewCell 中的 UICollectionView