如何在Swift中调用[self new]

dua*_*uan 6 objective-c uiview swift

这是一个UIView用ObjectiveC编写的扩展,可以轻松创建使用自动布局的视图:

+(id)autolayoutView
{
    UIView *view = [self new];
    view.translatesAutoresizingMaskIntoConstraints = NO;
    return view;
}
Run Code Online (Sandbox Code Playgroud)

它调用[self new]所以UIView的任何子类都可以使用此方法.我怎样才能在Swift中实现这一目标?

Gre*_*ley 5

好的,这似乎是解决方案.该类型必须具有required带有正确参数列表的初始化程序(在本例中没有参数).

class SubView: UIView {
    override required init() {
        super.init()
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    class func autolayoutView() -> UIView {
        var view = self()
        view.setTranslatesAutoresizingMaskIntoConstraints(false)
        return view
    }
}
Run Code Online (Sandbox Code Playgroud)