objective-c – 动画UIVisualEffectView模糊半径?

正如标题所说,是否有一种方式来动画化UIVisualEffectView的模糊半径?我有一个动态的背景背后的视图,所以 ImageEffects添加不能使用…唯一可以做到这一点,我知道的是动画的不透明度,但是iOS抱怨说这样做会打破EffectView,所以它绝对似乎是一个坏主意…任何帮助将会高兴的赞赏.

解决方法

答案是肯定的.以下是无模糊动画的示例 – >模糊:
// When creating your view...
let blurView = UIVisualEffectView()
// Later,when you want to animate...
UIView.animateWithDuration(1.0) { () -> Void in
    blurView.effect = UIBlurEffect(style: .Dark)
}

这将使模糊半径从零(完全透明,或者完全没有模糊效果)到一秒钟的认半径(完全模糊).并做反向动画:

UIView.animateWithDuration(1.0) { () -> Void in
    blurView.effect = nil
}

所产生的动画可以平滑地转换模糊半径,即使您实际上完全添加/删除模糊效果 – UIKit只是知道在幕后做什么.

请注意,这并不总是可能的:直到最近(不知道什么时候),UIVisualEffectView必须使用UIVisualEffect初始化,并且effect属性是只读的.现在,效果是可选的和读/写(虽然文档没有更新…),UIVisualEffectView包含一个空的初始化器,使我们能够执行这些动画.

唯一的限制是您无法手动将自定义模糊半径分配给UIVisualEffectView – 您只能在“无模糊”和“完全模糊”之间进行动画处理.

编辑:如果有人感兴趣,我创建了一个UIVisualEffectView的子类,可以让您完全控制模糊半径.需要注意的是它使用了一个私有的UIKit API,所以你可能不应该使用它提交应用程序进行审查.然而,它对原型或内部应用程序仍然很有用和有用:
https://github.com/collinhundley/APCustomBlurView

相关文章

对象的传值与返回说起函数,就不免要谈谈函数的参数和返回值...
从实现装饰者模式中思考C++指针和引用的选择最近在看...
关于vtordisp知多少?我相信不少人看到这篇文章,多半是来自...
那些陌生的C++关键字学过程序语言的人相信对关键字并...
命令行下的树形打印最近在处理代码分析问题时,需要将代码的...
虚函数与虚继承寻踪封装、继承、多态是面向对象语言的三大特...