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]
    }
}
从my
UITableViewCell

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)
。这不是我期望的尺寸。那是因为你在某个时候没有自己设置它。你是在暗示帧将在以后的某个地方发生更改-我已经给了你代码,让你收到更改通知,但这取决于你是否进行了更改。