如何将UIView调整到特定的高度和宽度,包括其子视图?

时间:2018-03-09 06:51:55

标签: ios swift uiview resize calayer

我在尝试正确调整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并行调整大小。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

不要忘记为subView

设置以下属性
subView.autoresizesSubviews = true;

根据Apple documentation

  

一个整数位掩码,用于确定接收器如何调整自身大小   当超级视图的界限发生变化时。

因此,使用您的示例,它看起来像这样

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个孩子的大小。