【发布时间】:2017-02-09 11:23:10
【问题描述】:
【问题讨论】:
标签: uitableview autolayout ios-autolayout uistackview
【问题讨论】:
标签: uitableview autolayout ios-autolayout uistackview
按比例填充的分布类型适用于固有内容大小。
因此,如果我们的垂直堆栈(高度为 600)视图有 2 个视图,ViewA(固有内容高度 200)和 ViewB(固有内容高度 100),堆栈视图会将它们的大小调整为 ViewA(高度 400)和 ViewB(高度200)。
在 IB 中,所见即所得。 拖动以更改帧是没有用的。只需运行应用程序。
只有当子视图以某种方式获得固有/约束高度时,您才会看到预期的行为。
它在 IB 中的外观这里顶部堆栈视图的视图被限制为最小高度 10 和 30,即比例 1:4。
【讨论】:
您可以通过创建自定义视图来解决此问题
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
}
【讨论】: