Swift-UIView何时更新其帧?
我有一个Swift-UIView何时更新其帧?,swift,uiview,delegates,Swift,Uiview,Delegates,我有一个UITableViewCell,我在其中添加了自定义视图,比如 class MyView: UIView { override init(frame: CGRect) { super.init(frame: frame) } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } convenience required i
UITableViewCell
,我在其中添加了自定义视图,比如
class MyView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
convenience required init(size: CGFloat) {
self.init(frame: CGRect.zero)
height = size
// init my other sub contents [1]
}
}
从myUITableViewCell
:
let myView = MyView(size: 35)
contentView.addSubView(myView)
我的问题是:MyView
中的其他UI组件取决于MyView
的宽度和高度,现在在[1]
中设置它们的位置还为时过早,因为MyView
的框架现在是(x:0,y:0,宽度:0,高度:高度)
在MyView
中,我应该将其他UI组件放在哪里?UIView
中是否有一个委托告诉我:“嘿,视图的框架已更新为其实际大小。”?(如UIViewController中出现的viewdid
)
您好,您可以
override var frame: NSRect {
didSet {
//update your subviews
}
}
在您的MyView
类中。但实际上,您应该考虑设置适当的约束:
我在didSet
中打印出了frame
的值,并看到它只被调用了一次,其值为:(0.0,0.0,0.0)
。这不是我期望的尺寸。那是因为你在某个时候没有自己设置它。你是在暗示帧将在以后的某个地方发生更改-我已经给了你代码,让你收到更改通知,但这取决于你是否进行了更改。