UIStackview 在 UITableviewCell 中按比例填充采用不正确的框架
UIStackview fill proportionally in a UITableviewCell takes incorrect frame
在 UIStackview 中添加比例填充设置不会让视图正确拉伸。这是预期的行为吗?
按比例填充'分布类型适用于固有内容大小。
因此,如果我们的垂直堆栈(高度为 600)视图有 2 个视图,ViewA(内部内容高度 200)和 ViewB(内部内容高度 100),堆栈视图会将它们调整为 ViewA(高度 400)和 ViewB (身高200).
在 IB 中,所见即所得。
拖动来改变帧是没有用的。只是 运行 应用程序。
只有当子视图以某种方式获得 intrinsic/constrained 高度时,您才会看到预期的行为。
它在 IB 中的外观 这里顶部堆栈视图的视图被限制为最小高度 10 和 30,即比例 1:4。
我们真正得到的
顶部堆栈视图是我们预期的样子。按高度比 1:4 查看。最后一个比率 1:1,不是预期的。
您可以通过创建自定义视图来解决这个问题
class CustomHeightView: UIView {
var height = 1.0
override public var intrinsicContentSize: CGSize {
return CGSize(width: 0.0, height: height)
}
}
将 UIView 的 class 更改为 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
}
在 UIStackview 中添加比例填充设置不会让视图正确拉伸。这是预期的行为吗?
按比例填充'分布类型适用于固有内容大小。
因此,如果我们的垂直堆栈(高度为 600)视图有 2 个视图,ViewA(内部内容高度 200)和 ViewB(内部内容高度 100),堆栈视图会将它们调整为 ViewA(高度 400)和 ViewB (身高200).
在 IB 中,所见即所得。 拖动来改变帧是没有用的。只是 运行 应用程序。
只有当子视图以某种方式获得 intrinsic/constrained 高度时,您才会看到预期的行为。
它在 IB 中的外观 这里顶部堆栈视图的视图被限制为最小高度 10 和 30,即比例 1:4。
我们真正得到的
顶部堆栈视图是我们预期的样子。按高度比 1:4 查看。最后一个比率 1:1,不是预期的。
您可以通过创建自定义视图来解决这个问题
class CustomHeightView: UIView {
var height = 1.0
override public var intrinsicContentSize: CGSize {
return CGSize(width: 0.0, height: height)
}
}
将 UIView 的 class 更改为 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
}