`覆盖init(frame:CGRect)`从未调用过?

时间:2017-05-31 18:15:06

标签: ios swift uiview

我有一个简单的UIView子类,如下所示:

import UIKit

class AngleViewManager: UIView {

    class AngleView: UIView {
        override init(frame: CGRect) {
            super.init(frame: frame)
            backgroundColor = UIColor.red
        }


        init(first: CGPoint, second: CGPoint, third: CGPoint) {
            // setup
            super.init(frame: CGRect(dimensions))
        }

        required init?(coder aDecoder: NSCoder) {
            fatalError("init(coder:) has not been implemented")
        }
    }
}

AngleView内初始化AngleViewManager实例时

AngleView(firstPoint, secondPoint, thirdPoint)

背景颜色不是红色,并且在重写的init中设置断点表明它永远不会被调用,即使我在我的自定义初始化程序中显式调用它,它也会被成功调用。

我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:2)

您正在调用UIView的超级课程(init(frame: CGRect))。

只需将其更改为self.init(frame: frame)

即可