模态 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 模态表:设备旋转后左/右填充错误