2017-01-05 34 views
0

我有一個UIView,並且以編程方式創建,然後我將其作爲subView添加到我的viewController.view。但是,該視圖不受模糊影響。 這是我的代碼:UIVisualEffect沒有顯示在UIView

let blurryView: UIView = { 
    let blur = UIView() 
    blur.backgroundColor = UIColor.yellow 
    blur.alpha = 0.90 
    let blurEffect = UIBlurEffect(style: .extraLight) 
    let blurEffectView = UIVisualEffectView(effect: blurEffect) 
    blur.addSubview(blurEffectView) 
    blurEffectView.center = blur.center 
    blurEffectView.frame = blur.bounds 
    blur.translatesAutoresizingMaskIntoConstraints = false 
    return blur 
}() 

func manageBlurView() { 
    blurryView.widthAnchor.constraint(equalToConstant: 250).isActive = true 
    blurryView.heightAnchor.constraint(equalToConstant: 250).isActive = true 
    blurryView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true 
    blurryView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    view.addSubview(blurryView) 
    manageBlurView() 

} 
  • 模糊效果被添加和我一倍檢查,使用breakpoints和品脫語句if blur.subviews == [blurEffectView] { print("Blur effect added as a subview") }和它打印出來。
  • 我有一個背景圖像,以確定它是否模糊。
  • 我也嘗試在viewDidLoad()中添加模糊效果,但沒有發生任何事情。

回答

1

直接添加兩個黃色背景視圖和模糊的視圖作爲主視圖的孩子:

let backg = UIView(frame: self.view.frame) 
    backg.backgroundColor = UIColor.yellow 
    backg.alpha = 0.90 

    self.view.addSubview(backg) 

    // the blur effect 
    let blurEffect = UIBlurEffect(style: .extraLight) 
    let blurredEffectView = UIVisualEffectView(effect: blurEffect) 

    blurredEffectView.frame = self.view.frame 
    self.view.addSubview(blurredEffectView) 

你可以把上面的代碼中viewDidLoad

+0

謝謝你的幫助。我不知道爲什麼我應該這樣做。我正在處理約束,所以我可以輕鬆地重新約束並移動它們。 – MEnnabah