创建UIView子类没有Init() - Swift?
问题描述:
我有一个UIView子类仅包含以下内容:创建UIView子类没有Init() - Swift?
drawRect(rect: CGRect) {
let ctx: CGContext? = UIGraphicsGetCurrentContext()
let radius: CGFloat = rect.width/2
let endAngle = CGFloat(2 * M_PI)
CGContextAddArc(ctx, bounds.width/2, bounds.height/2, radius, 0, endAngle, 1)
CGContextSetStrokeColorWithColor(ctx, UIColor.blackColor().CGColor)
CGContextSetFillColorWithColor(ctx, UIColor.whiteColor().CGColor)
CGContextSetLineWidth(ctx, 4.0)
CGContextDrawPath(ctx, CGPathDrawingMode.FillStroke)
}
我不叫任何的init()函数,但对象仍然绘制。
此外,当我尝试实现init()函数时,我给出了有关所需初始化的几个错误。
所以我的问题是:我如何能够创建一个没有init()函数的UIView对象?
答
初始化器是继承的。你的超类(UIView
)已经定义了init
,所以你的类默认继承它们。
一旦你定义了init
,你的类将不会继承超类初始化器,所以你将不得不定义所有需要的类。
只是澄清:如果我定义什么是必需的,并调用super.init()我可以重写init()函数? –
@BrandonBradley是的,你可以。然而,对于'UIView'来说,覆盖作为指定初始值设定项的'init(frame:)'更为常见。 – Sulthan
好的,谢谢你的信息。对此还是比较新的。 –