我已经阅读了数十个问题,关于在早期版本的iOS中模拟iOS 7模糊效果。但是这里出现的根本问题是:iOS 7的UIKit
是否真的有一种好的和方便的方法可以使任何UIView
都变得模糊?这对我来说似乎是相当合理的。如有帮助,将不胜感激。
我已经阅读了数十个问题,关于在早期版本的iOS中模拟iOS 7模糊效果。但是这里出现的根本问题是:iOS 7的UIKit
是否真的有一种好的和方便的方法可以使任何UIView
都变得模糊?这对我来说似乎是相当合理的。如有帮助,将不胜感激。
苹果提供了示例代码,以iOS 7的风格对任何 UIImage 进行模糊处理。
前往苹果开发者下载页面,如果需要请登录。搜索“imageeffects”以找到 WWDC 2013 Sample Code 条目,并下载 iOS_UIImageEffects 示例代码。
该项目中有一个 UIImage 类别在 UIImage+ImageEffects.h
中,您可以将其复制到自己的项目中,其中包含 applyBlurWithRadius:...
方法。
您需要将项目与 Accelerate 框架链接。
这不会自动实时模糊视图 - 对于此,请参见FXBlurView,它通过自动快照其父视图执行类似的技术。但是它可能会相当耗费性能:首先考虑是否可以通过静态地模糊图像来实现您想要的效果,而不是尝试“实时”模糊移动内容。
iOS 8.0(不是 iOS 7)起,UIKit提供 UIVisualEffectView
和 UIBlurEffect
。您可以观看 WWDC 2014 Session 419 “Advanced Graphics and Animations for iOS Apps”(或只需下载幻灯片)以了解这些类的介绍。
-[UIView drawViewHierarchyInRect:afterScreenUpdates:]
方法来捕获背景视图的外观,然后对其应用CIFilter
以执行模糊。