Swift - 完成更新框架后的UIView?

时间:2017-05-02 08:17:11

标签: 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 init(size: CGFloat) {
        self.init(frame: CGRect.zero)

        height = size

        // init my other sub contents [1]
    }
}

来自我的UITableViewCell

let myView = MyView(size: 35)
contentView.addSubView(myView)

我的问题:我MyView中的其他用户界面组件取决于width的{​​{1}}和height,现在在MyView设置位置为时尚早因为[1]的框架现在是MyView

我应该将其他UI组件放在(x: 0, y: 0, width: 0, height: height)中?是否有MyView中的代表告诉我:“嘿,视图的框架会根据其实际大小进行更新。”? (例如UIView中的viewDidAppear

此致

1 个答案:

答案 0 :(得分:1)

你可以做到

override var frame: NSRect {
    didSet {
        //update your subviews
    }
}

MyView课程中。但实际上,您应该考虑设置适当的约束:

https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/