概要
- UIViewにたいしてBlur処理をかけるときに使用します。
-
insertSubview(blurView, at: 0)
にしており、Viewの背面にBlur処理を入れたViewが配置されるので、前面にする場合はaddSubview(blurView)
に書き換えてください。
UIView+Extension.swift
extension UIView {
func addBlur(style: UIBlurEffect.Style = .extraLight) {
let blurView = UIVisualEffectView()
blurView.effect = UIBlurEffect(style: style)
blurView.frame = bounds
blurView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
backgroundColor = .clear
insertSubview(blurView, at: 0)
}
func removeBlur() {
subviews
.filter { $0.className == UIVisualEffectView.className }
.forEach { $0.removeFromSuperview() }
}
}
ViewControllerの背景にBlur処理を入れる
-
modalPresentationStyle
を設定するのを忘れないようにしましょう
BlurViewController.swift
class BlurViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// BlurViewControllerがInitialViewControllerの場合
self.modalPresentationStyle = .overCurrentContext // or .custom
// BlurViewControllerはNavigationViewControllerのRootViewControllerの場合
self.navigationController?.modalPresentationStyle = .overCurrentContext // or .custom
// Blur処理
self.view.addBlur()
}
}