如何初始化自定义 UIImageView 子类的空对象

How to initialize an empty object of a custom UIImageView subclass

我有一个自定义的 UIImageView 子类,它运行一些基本代码,例如创建阴影等。 当我不覆盖任何 init 时,一切正常。我可以像创建空 UIImageView() 一样创建一个空的 CustomImageView() 。当我添加所有必需的覆盖时,我无法再创建空对象。

我得到的错误是:

Cannot invoke initializer for type 'ProfilePictureImageView' with no arguments

建议:

  1. Overloads for 'ProfilePictureImageView' exist with these partially matching parameter lists: (coder: NSCoder), (frame: CGRect), (image: UIImage?)

我在我的视图控制器中创建空对象是这样的:

var customImageView = CustomImageView()

我的自定义 UIImageView 子类如下所示:

class CustomImageView: UIImageView {
    
    override init(image: UIImage?) {
        super.init(image: image)
    }
    
    override init(frame: CGRect) {
        super.init(frame: frame)
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
    }


// Followed by my custom variables and methods.

}

我尝试添加以下内容,假设我缺少某种空的 init。但这也没有用。

override init() {
    super.init()
}

你必须制作一个 convenience init 方法。

class CustomImageView: UIImageView {
    //...
    convenience init() {
        self.init(frame: .zero) // or self.init(image: nil)
    }
}