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

标签 objective-c blur uivisualeffectview animatewithduration

正如标题所说,有没有办法为 UIVisualEffectView 的模糊半径设置动画?我在 View 后面有一个动态背景,所以不能使用 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 只知道在幕后做什么。

请注意,这并非总是可行:直到最近(不确定何时),必须使用 UIVisualEffect 初始化 UIVisualEffectView,并且 effect 属性是只读的。现在,effect 既是可选的又是读/写的(虽然文档没有更新...),并且 UIVisualEffectView 包含一个空的初始化程序,使我们能够执行这些动画。

唯一的限制是您不能手动将自定义模糊半径分配给 UIVisualEffectView - 您只能在“无模糊”和“完全模糊”之间设置动画。

编辑: 如果有人感兴趣,我创建了一个 UIVisualEffectView 的子类,它可以让您完全控制模糊半径。需要注意的是,它使用私有(private) UIKit API,因此您可能不应该使用它提交应用程序以供审核。但是,它对于原型(prototype)或内部应用程序仍然很有趣且有用: https://github.com/collinhundley/APCustomBlurView

关于objective-c - 动画 UIVisualEffectView 模糊半径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29278400/

相关文章:

ios - 清除节标题上方的 UITableViewCells

iphone - 当用户在 DatePicker 控件中使用 objective-c 选择特定日期和时间时,我想在标签中显示日期和时间

iphone - UIViewController 不知道显示模态视图的旋转

javascript - CSS - 在淡入时去模糊图像

ios - 在保持背景动态的同时向 View 添加动画模糊

ios - 使用 UIVisualEffectView 创建模糊 View ,在模拟器上正确但在 iphone 和 ipad 上不正确

ios - UIScrollView 内存警告

javascript - 使用 JQuery 或 Javascript 寻求同时淡入淡出和模糊效果

jquery - 帮助 jquery 中的焦点/模糊语义

ios - UIVisualEffectView 不适用于 iPhone 6