我在尝试正确调整UIView的大小时遇到了问题。
下面的示例场景:
// other view controller initializations
let containerView = UIView(frame: CGRect(x:0, y:0, width: self.view.bounds.width, height: self.view.bounds.height))
self.view.addSubview(containerView)
view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
let subView = UIView(frame: CGRect(x:0, y:0, width:containerView.bounds.size.width / 2, height: containerView.bounds.size.height))
containerView.addSubview(subView)
subView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
让我们说我想将containerView调整到特定的高度和宽度,这样子视图也可以与containerView并行调整大小。
我怎样才能做到这一点?
答案 0 :(得分:0)
不要忘记为subView
subView.autoresizesSubviews = true;
一个整数位掩码,用于确定接收器如何调整自身大小 当超级视图的界限发生变化时。
因此,使用您的示例,它看起来像这样
let containerView = UIView(frame: CGRect(x:0,
y:0,
width: self.view.bounds.width,
height: self.view.bounds.height))
containerView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
self.view.addSubview(containerView)
let subView = UIView(frame: CGRect(x:0,
y:0,
width: containerView.bounds.size.width / 2,
height: containerView.bounds.size.height))
subView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
subView.autoresizesSubviews = true;
containerView.addSubview(subView)
答案 1 :(得分:0)
我能够通过使用UIStackView
来实现我的目标。
let stackView = UIStackView(frame: .zero)
currentPage.addSubview(stackView)
constraintViewToSuperView(view: stackView) // my helper function to constraint stackview to bounds of parent
stackView.axis = .vertical
stackView.alignment = .fill
stackView.distribution = .fillProportionally
stackView.spacing = 1
stackView.backgroundColor = .red
关键是将UIStackview
约束到它的父级边界。然后,我对父母进行的任何调整也会按比例调整UIStackview
个孩子的大小。