我有一个包含按钮的视图控制器((ngModelChange)
)。该按钮以模态方式显示另一个视图控制器(<input>
)。 segue的vc1
设置为vc2
。
我还以编程方式在vc1上创建了presentation style
(它涵盖了整个over current context
的{{1}})。
现在,我需要将视觉效果的效果设置为UIVisualEffectView
,但是vc1
以模态方式显示(view
的{{1}}设置为{{ 1}},因此UIBlurEffect
后面仍然可以看到vc2
。
是否可以在不必编写自定义视图控制器转换的情况下实现,如果可以,可以如何实现?如果您知道如何做到这一点,我将不胜感激任何帮助或建议。
答案 0 :(得分:1)
iOS中默认不会出现模糊转换。所以你需要自定义代码 一个简单的解决方案是添加子视图:
转换为vc2时添加以下代码:
let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.dark)
blurEffectView = UIVisualEffectView(effect: blurEffect) // Global variable
blurEffectView.frame = view.bounds
blurEffectView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
self.view.addSubview(blurEffectView)
NotificationCenter.default.addObserver(self, selector: #selector(self.removeBlurView), name: NSNotification.Name(rawValue: "removeBlurView"), object: nil)
删除模糊视图的功能(在vc1中):
func removeBlurView()
{
NotificationCenter.default.removeObserver(self)
blurEffectView.removeFromSuperview()
}
当你解雇vc2时在vc2中添加以下内容:
NotificationCenter.default.post(name: NSNotification.Name(rawValue: "removeBlurView"), object: nil)
还有其他方法可以实现这一目标,如Ray's tutorial中所述和密切相关的tutorial
答案 1 :(得分:0)
您可以使用子ViewController机制。
let vc2 = VC2()
vc1.addChildViewController(vc2)
vc2.view.frame = vc1.view.frame
vc1.view.addSubview(vc2.view)
vc2.didMove(toParentViewController: vc1)