我有一个视图,说一个红色矩形,我有一个子视图,一个绿色矩形,都是以编程方式添加的。
现在,如何在不获取屏幕当前大小的情况下,使绿色矩形在宽度和高度上填充整个红色矩形,这样当红色矩形在屏幕旋转时调整大小时,绿色矩形也会自动调整大小?
答案 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