在没有 Init() 的情况下创建 UIView 子类 - Swift?
Create UIView Subclass Without Init() - Swift?
我有一个 UIView 子类,它只包含以下内容:
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 对象?
初始化器是继承的。您的 superclass (UIView
) 已经定义了 init
,因此您的 class 默认继承它们。
定义 init
后,您的 class 将不再继承超级class 初始化器,因此您必须定义所有必需的初始化器。
我有一个 UIView 子类,它只包含以下内容:
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 对象?
初始化器是继承的。您的 superclass (UIView
) 已经定义了 init
,因此您的 class 默认继承它们。
定义 init
后,您的 class 将不再继承超级class 初始化器,因此您必须定义所有必需的初始化器。