模态 Segue 表单工作表模糊背景

Posted

技术标签:

【中文标题】模态 Segue 表单工作表模糊背景【英文标题】:Modal Segue Form Sheet Blurred Background 【发布时间】:2017-06-20 18:25:32 【问题描述】:

I have a modal segue (with the Form Sheet presentation) which I call whenever a tableViewCell is selected.我在情节提要中设置了 segue,但如果需要,我可以以编程方式设置它。我希望模态视图的背景是Visual Effect View with Blur,而不是半透明的黑色。我怎样才能做到这一点?谢谢您的帮助!我正在使用 Swift 3。

【问题讨论】:

【参考方案1】:

您可以通过实现两个协议来做到这一点 - 对于您的 Animator<UIViewControllerAnimatedTransitioning> 和对于 TransitioningDelegate<UIViewControllerTransitioningDelegate>

Animator 中,您需要覆盖方法animateTransition 并在那里创建UIVisualEffectView,您将添加到transitionContext.containerView

class Animator: UIViewControllerAnimatedTransitioning

    func blurEffectView(_ transitionContext: UIViewControllerContextTransitioning) -> UIVisualEffectView
    
        let container = transitionContext.containerView;
        var effectView = objc_getAssociatedObject(container, &BlurEffectViewKey) as? UIVisualEffectView;
        if effectView == nil
        
            let effect = UIBlurEffect(style: .dark)

            effectView = UIVisualEffectView(effect: effect);
            objc_setAssociatedObject(container, &BlurEffectViewKey, effectView!, objc_AssociationPolicy.OBJC_ASSOCIATION_ASSIGN);
            container.addSubview(effectView!);
            effectView!.frame = container.bounds;

        
        return effectView!;
    

    func animateTransition(using transitionContext: UIViewControllerContextTransitioning)
    
        ...

        let blurView = self.blurEffectView(transitionContext);

        if (presenting)
        
            blurView.contentView.addSubview(toController.view);
        

        ...
    

    ...

然后,您设置并展示您的模态控制器:

presentedViewController.transitioningDelegate = myTransitioningDelegate
presentedViewController.modalPresentationStyle = .overFullScreen
self.present(presentedViewController, animated:false, completion:nil)

更多详细信息,请参考 WWDC'13 session "Custom Transitions Using View Controllers"

【讨论】:

以上是关于模态 Segue 表单工作表模糊背景的主要内容,如果未能解决你的问题,请参考以下文章

带有导航器的颤振模态底部工作表未按预期弹出

EXCEL VBA 窗体显示期间不执行下面代码,也不影响操作工作表?

带有表单的 SwiftUI 模态表:设备旋转后左/右填充错误

如何防止工作表在 SwiftUI 中使其后面的视图变暗或删除不必要的填充?

模态表单消失而无需单击表单

在模态 vue 组件表单中绑定数据库表值