0

我正在尝试对 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 方法。我试过这样做,但仍然无法让它工作。任何想法如何去实施这些方法?谢谢!

4

1 回答 1

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)
    }
}
于 2016-03-16T08:30:15.830 回答