在UITableviewCell中按比例填充UIStackview会占用不正确的帧

时间:2017-02-09 11:23:10

标签: uitableview autolayout ios-autolayout uistackview

在UIStackview中添加比例填充设置不会让视图正确拉伸。这是预期的行为吗? enter image description here

2 个答案:

答案 0 :(得分:3)

按比例填写'分发类型与内在内容大小一起使用。

因此,如果我们的垂直堆栈(高度说600)视图有2个视图,ViewA(内部内容高度200)和ViewB(内部内容高度100),堆栈视图将它们调整为ViewA(高度400)和ViewB(高度) 200)。

在IB中你看到的不是你得到的。 拖动以进行帧更改是没用的。只需运行该应用程序。

只有当子视图以某种方式获得内在/约束高度时,您才会看到预期的行为。

它在IB中的样子这里顶部堆栈视图的视图被限制为最小高度10和30,即比例1:4。

enter image description here

我们真正得到的是什么 顶部堆栈视图是我们期望的样子。以1:4的比例查看高度。并且底部比例为1:1,不是预期的。 enter image description here

答案 1 :(得分:0)

您可以通过创建自定义视图来解决此问题

prod_dns

将UIView的类更改为CustomHeightView

所以在Controller中为UIViews创建一个插座

class CustomHeightView: UIView {
   var height = 1.0

  override public var intrinsicContentSize: CGSize {
    return CGSize(width: 0.0, height: height)
  }
}

然后在viewDidLoad中按照您希望的方式设置比例

@IBOutlet weak var header_one: CustomHeightView!
@IBOutlet weak var header_two: CustomHeightView!