代码之家  ›  专栏  ›  技术社区  ›  Jojo Narte

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

  •  0
  • Jojo Narte  · 技术社区  · 6 年前

    我在尝试正确调整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 回复  |  直到 6 年前
        1
  •  0
  •   kd02    6 年前

    不要忘记为 subView

    subView.autoresizesSubviews = true;
    

    根据 Apple documentation

    一个整数位掩码,用于确定接收器如何调整自身大小 当其SuperView边界更改时。

    所以用你的例子来看

    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)
    
        2
  •  0
  •   Jojo Narte    6 年前

    通过使用 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 的孩子。