如何初始化自定义 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
建议:
- 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)
}
}
我有一个自定义的 UIImageView 子类,它运行一些基本代码,例如创建阴影等。
当我不覆盖任何 init
时,一切正常。我可以像创建空 UIImageView()
一样创建一个空的 CustomImageView()
。当我添加所有必需的覆盖时,我无法再创建空对象。
我得到的错误是:
Cannot invoke initializer for type 'ProfilePictureImageView' with no arguments
建议:
- 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)
}
}