子类化UIVisualEffect的问题

时间:2016-03-16 08:02:06

标签: ios swift uivisualeffectview

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

1 个答案:

答案 0 :(得分:1)

有一个拼写错误,您想要继承UIVisualEffectView,而不是UIVisualEffect
它们不同UIVisualEffectView继承自UIView并应用您传入的UIVisualEffectUIVisualEffect只是效果。

class BlurView: UIVisualEffectView {
    override init(effect: UIVisualEffect?) {
        super.init(effect: effect)
    }


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