自定义UIView类与模糊

时间:2017-02-13 19:17:27

标签: swift uiview blur

我正在尝试创建一个自定义的UIView类,我可以在我的应用程序中更改某些视图的类。我希望视图是圆的并具有模糊效果。我可以通过func专门引用插座名称,但只想更改视图的类,以便它可以重复使用。

import UIKit

class RoundedBlur: UIView {

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.addRoundedBlur()
    }

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

    func addRoundedBlur() {
        let roundedBlurView = UIView()

        let blur = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffectStyle.light))
        blur.frame = roundedBlurView.bounds
        blur.layer.cornerRadius = 0.5 * roundedBlurView.bounds.size.width
        blur.clipsToBounds = true

        blur.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        roundedBlurView.insertSubview(blur, at: 0)
    }
}

1 个答案:

答案 0 :(得分:0)

您无需创建子视图即可实现此目的。 您可以只引用类本身,这样您就可以通过扩展重用此视图来创建新视图。

class RoundedBlur: UIView {

  override init(frame: CGRect) {
    super.init(frame: frame)
    self.addRoundedBlur()
  }

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

  func addRoundedBlur() {
    let blur = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffectStyle.light))
    self.frame = self.bounds
    self.layer.cornerRadius = 10.0
    self.clipsToBounds = true

    blur.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    self.insertSubview(blur, at: 0)

  }
}