【问题标题】:UIVisualEffectView delay with UIModalTransitionStyle CrossDissolveUIVisualEffectView 延迟与 UIModalTransitionStyle CrossDissolve
【发布时间】:2016-10-17 12:13:22
【问题描述】:

我正在展示一个模态视图控制器,其背景为UIVisualEffectViewUIBlurEffect 类型为.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 中的答案。stackoverflow.com/questions/39671408/…

标签: ios swift xcode uikit swift3


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

您不能将UIVisualEffectViewcrossDissolve 动画一起使用...

【讨论】:

    猜你喜欢
    • 2015-05-03
    • 2017-07-28
    • 2013-07-25
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多