标准的iOS 7模糊效果实现

25

我已经阅读了数十个问题,关于在早期版本的iOS中模拟iOS 7模糊效果。但是这里出现的根本问题是:iOS 7的UIKit是否真的有一种好的和方便的方法可以使任何UIView都变得模糊?这对我来说似乎是相当合理的。如有帮助,将不胜感激。

3个回答

27

苹果提供了示例代码,以iOS 7的风格对任何 UIImage 进行模糊处理。

前往苹果开发者下载页面,如果需要请登录。搜索“imageeffects”以找到 WWDC 2013 Sample Code 条目,并下载 iOS_UIImageEffects 示例代码。

该项目中有一个 UIImage 类别在 UIImage+ImageEffects.h 中,您可以将其复制到自己的项目中,其中包含 applyBlurWithRadius:... 方法。

您需要将项目与 Accelerate 框架链接。

这不会自动实时模糊视图 - 对于此,请参见FXBlurView,它通过自动快照其父视图执行类似的技术。但是它可能会相当耗费性能:首先考虑是否可以通过静态地模糊图像来实现您想要的效果,而不是尝试“实时”模糊移动内容。


26

更新

iOS 8.0(不是 iOS 7)起,UIKit提供 UIVisualEffectViewUIBlurEffect。您可以观看 WWDC 2014 Session 419 “Advanced Graphics and Animations for iOS Apps”(或只需下载幻灯片)以了解这些类的介绍。

原文

不,没有。苹果没有方便地公开接口来实现这一点。例如,如果您阅读此讨论,Rincewind的回复应该清楚地表明,苹果没有为此提供公共API,并且他们使用的私有API具有严重的限制并可能会更改。
您必须自己实现模糊效果。您可能希望使用新的-[UIView drawViewHierarchyInRect:afterScreenUpdates:]方法来捕获背景视图的外观,然后对其应用CIFilter以执行模糊。

你有论坛帖子的链接吗?在 WWDC 视频中,他们展示了它是如何精美实现的,还提供了一个示例项目,但由于他们使用的方法不在 API 中,该项目无法构建。 - Michal
我已经更新了我的答案,并附上了一个链接,该链接指向了苹果开发者论坛上的一次讨论。 - rob mayoff
由于iOS 8尚未发布,我需要一个iOS 7的解决方案,而你的方法并没有起作用,你有什么想法吗?http://stackoverflow.com/questions/25369789/add-blur-in-uicollectionviewcell - Rodrigo Ruiz

4

UIKit没有方便的方法来实现这种效果。然而,Github上有一些库可以轻松地实现这种效果。Nick Lockwood's 库似乎是最受欢迎的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接