我可以让子视图填充其大小的视图吗?

时间:2016-09-20 05:00:20

标签: ios swift

我有一个视图,说一个红色矩形,我有一个子视图,一个绿色矩形,都是以编程方式添加的。

现在,如何在不获取屏幕当前大小的情况下,使绿色矩形在宽度和高度上填充整个红色矩形,这样当红色矩形在屏幕旋转时调整大小时,绿色矩形也会自动调整大小?

4 个答案:

答案 0 :(得分:2)

let redView = UIView(frame: CGRect(x: 100, y: 100, width: 100, height: 350))
redView.backgroundColor = UIColor.redColor()
redView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
view.addSubview(redView)

let greenView = UIView(frame: redView.bounds)
greenView.backgroundColor = UIColor.greenColor()
redView.addSubview(greenView)

greenView.autoresizingMask = redView.autoresizingMask

答案 1 :(得分:0)

您可以覆盖红色矩形的layoutSubviews()方法。在布局中,只需将红色矩形框架重新分配给绿色矩形框架即可。这将使框架调整大小并重新填充方向。

这只是一个供参考的示例代码。

class RedRect:UIView {

    void layoutSubviews(){

        greenRect.frame = bounds

    }

}

答案 2 :(得分:0)

您可以在Visual Format Auto Layout

之下使用self == YOUR_GREEN_RECT
guard let superview = self.superview else {
    return
}

self.translatesAutoresizingMaskIntoConstraints = false
superview.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-0-[subview]-0-|", options: .DirectionLeadingToTrailing, metrics: nil, views: ["subview": self]))
superview.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-0-[subview]-0-|", options: .DirectionLeadingToTrailing, metrics: nil, views: ["subview": self]))

或仅使用Autoresizingmask

self.autoresizingMask = [.flexibleWidth, .flexibleHeight]

答案 3 :(得分:0)

 class RedRect:UIView {

    void layoutSubviews(){

        greenRect.frame = bounds

    }

}

应为frame = bounds