UIVisualEffectView 延迟与 UIModalTransitionStyle CrossDissolve
Posted
技术标签:
【中文标题】UIVisualEffectView 延迟与 UIModalTransitionStyle CrossDissolve【英文标题】:UIVisualEffectView delay with UIModalTransitionStyle CrossDissolve 【发布时间】:2016-10-17 12:13:22 【问题描述】:我正在展示一个模态视图控制器,其背景为UIVisualEffectView
,UIBlurEffect
类型为.light
我将模态视图控制器呈现如下:
infoViewController.modalPresentationStyle = .overFullScreen
infoViewController.modalTransitionStyle = .crossDissolve
self.present(infoViewController, animated: true, completion: nil)
我注意到直到 crossDissolve
动画完成后才会出现模糊效果视图。
对于coverVertical
等其他过渡样式,情况并非如此。
这只发生在带有 Swift 3 的 ios 10 上。
如何让crossDissolve
动画与infoViewController
上的视觉效果视图一起工作。有什么建议/解决方法吗?
【问题讨论】:
您的代码在 iOS 10 (Swift 3) 测试项目中运行良好。您确定您没有在viewWillAppear/viewDidAppear
方法中对视图进行任何操作吗?
完全没有任何操作。对我来说,交叉溶解动画完成,弹出视图动画可见,然后背景 uieffect 视图突然出现。
你能把它包装在一个测试项目中,以便我可以重现它并修复它吗?
...或先提供infoViewController
的代码
这是 Objective C 中的答案。***.com/questions/39671408/…
【参考方案1】:
我所做的是将crossDisolve
替换为CATransition
,如下所示:
self.present(controller,
animated: false,
completion: nil)
let transition = CATransition()
transition.duration = 0.3
transition.type = kCATransitionFade
view.window?.layer.add(transition, forKey: nil)
希望对您有所帮助。
【讨论】:
动画完成后会发生什么。?如果添加到图层中,是否应该再次删除,还是可以忽略? 可以忽略。完成后会自动删除过渡【参考方案2】:检查你的领事馆,你应该在那里看到原因 -
<_uipopoverbackgroundvisualeffectview> 被要求为其不透明度设置动画。这将导致效果出现损坏,直到不透明度恢复为 1。
您不能将UIVisualEffectView
与crossDissolve
动画一起使用...
【讨论】:
以上是关于UIVisualEffectView 延迟与 UIModalTransitionStyle CrossDissolve的主要内容,如果未能解决你的问题,请参考以下文章
UIVisualEffectView 和 UITableView
在 WKWebView 上滚动时 UINavigationBar/UIVisualEffectView 的模糊半透明效果?