Swift UIView布局子视图通知
我有一个关于UIView布局子视图的问题Swift UIView布局子视图通知,swift,layout,uiview,Swift,Layout,Uiview,我有一个关于UIView布局子视图的问题 class ViewController: UIViewController { let v1 = SubView1() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. view.addSubview(v1)
class ViewController: UIViewController {
let v1 = SubView1()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
view.addSubview(v1)
v1.frame = CGRect(x: 50, y: 50, width: 70, height: 30)
}
}
class SubView1: UIView {
let subView = SubView2()
override func layoutSubviews() {
super.layoutSubviews()
print("layoutSubviews SubView1")
}
override init(frame: CGRect) {
super.init(frame: frame)
var frame = subView.frame
frame.origin = CGPoint(x: 0, y: 0)
frame.size.width = 50
subView.frame = frame
addSubview(subView)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
class SubView2: UIView {
let label = UILabel()
override func layoutSubviews() {
super.layoutSubviews()
print("layoutSubviews SubView2")
var frame = label.frame
frame.origin = CGPoint(x: 10, y: 10)
frame.size.width = self.frame.width - 20
label.frame = frame
label.sizeToFit()
frame = self.frame
frame.size.height = label.frame.size.height + 20
self.frame = frame
}
override init(frame: CGRect) {
super.init(frame: frame)
label.numberOfLines = 0
label.text = "test test test test test test test test"
addSubview(label)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
此代码打印:
布局子视图子视图1布局子视图子视图2 我想调整子视图1,使子视图1环绕子视图2。
但SubView2的frmae是在调用“layoutSubviews SubView2”时确定的。 (在“layoutSubviews子视图1”中我不知道)
我想知道如何在“layoutSubviews SubView2”之后注意到SubView1您处理问题的方式很难。我的建议是实现你想要的