【问题标题】:Modal Segue Form Sheet Blurred Background模态 Segue 表单工作表模糊背景
【发布时间】: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。

【问题讨论】:

    标签: ios swift3 segue modalviewcontroller


    【解决方案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"

    【讨论】:

      猜你喜欢
      • 2016-04-22
      • 1970-01-01
      • 1970-01-01
      • 2018-04-24
      • 2015-11-24
      • 2021-01-15
      • 2017-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多