내가 하고 싶은 것은 버튼을 클릭 했을 때, Modal view가 나타나는데, 그 때 이전 뷰의 배경을 blur 처리 하고 싶은 것이다.
A view -> B view (Modal)
B view가 나오면 blur 처리된 A view가 배경이 되는 것이다.
즉, B view에 부분적으로 alpha 값을 낮게 설정해줘서 투명하게 해줘야한다.
A View에서 button action
@objc private func didTapButton() {
let sb = UIStoryboard(name: "MyStoryboard", bundle: nil)
let vc = sb.instantiateViewController(identifier: "B") as! B
let blurEffect = UIBlurEffect(style: UIBlurEffect.Style.light)
let blurEffectView = UIVisualEffectView(effect: blurEffect)
blurEffectView.frame = view.bounds
blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
view.addSubview(blurEffectView)
vc.modalTransitionStyle = .coverVertical
vc.modalPresentationStyle = .overCurrentContext
self.present(vc, animated: true, completion: nil)
}
B view에서
class B: UIViewController {
@IBOutlet weak var popupView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.gray.withAlphaComponent(0.1)
}
UIBlurEffect.Style에 extra light, light, dark가 있는데 extraLight underlying view보다 더 밝게, light는 같은 정도, dark는 더 어둡게를 뜻한다.