我正在尝试子类化UIVisualEffect,但是我在实现正确的init方法时遇到了问题。到目前为止,我有这个:
import UIKit
class BlurView: UIVisualEffect {
init(effect: UIVisualEffect?) {
super.init(effect)
print("Init 1 called")
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
print("Init 2 called")
}
}
我收到错误:"在通话中错过了参数编码器"。我也尝试过:
import UIKit
class BlurView: UIVisualEffect {
init(effect: UIVisualEffect?) {
super.init()
print("Init 1 called")
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
print("Init 2 called")
}
}
这抱怨我还没有实现init方法。我尝试过这样做,但仍然无法正常工作。有任何想法如何实施这些方法?谢谢!
答案 0 :(得分:1)
有一个拼写错误,您想要继承UIVisualEffectView
,而不是UIVisualEffect
。
它们不同UIVisualEffectView
继承自UIView
并应用您传入的UIVisualEffect
。UIVisualEffect
只是效果。
class BlurView: UIVisualEffectView {
override init(effect: UIVisualEffect?) {
super.init(effect: effect)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
}