25

我已经阅读了几十个关于在早期版本的 iOS 中模仿 iOS 7 模糊效果的问题。但这里出现的基本问题是,iOS 7UIKit真的有一种很好且方便的方式来制作模糊 UIView吗?这对我来说似乎很合乎逻辑。任何帮助表示赞赏。

4

3 回答 3

27

Apple 提供了示例代码来模糊 iOS 7 风格的任何 UIImage。

如有必要,请转到 Apple Developer 下载并登录。搜索“imageeffects”调出WWDC 2013 示例代码条目,并下载iOS_UIImageEffects示例代码。

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

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

这不会实时自动对视图进行模糊处理——为此,请参阅FXBlurView,它通过自动快照其超级视图来执行类似的技术。但是,它可能会非常消耗性能:首先考虑是否可以通过静态模糊图像来实现您想要的效果,而不是尝试“实时”模糊移动内容。

于 2013-11-10T13:50:10.000 回答
26

更新

从 iOS 8.0(不是iOS 7)开始,UIKit 提供UIVisualEffectViewUIBlurEffect. 您可以观看WWDC 2014 Session 419 “Advanced Graphics and Animations for iOS Apps”</a>(或直接下载幻灯片)了解这些课程的介绍。

原来的

不,它没有。Apple 并没有公开方便地执行此操作的接口。例如,如果您阅读了这个讨论,Rincewind 的回复应该清楚地表明 Apple 没有为此提供公共 API,并且他们使用的私有 API 有严重的限制并且可能会改变。

您必须自己实现模糊效果。您可能希望使用新-[UIView drawViewHierarchyInRect:afterScreenUpdates:]方法来捕获背景视图的外观,然后CIFilter对其应用 a 以执行模糊。

于 2013-09-20T23:25:31.153 回答
4

UIKit 没有方便的方法来实现这种效果。但是,Github 上有一些库可以轻松实现此效果。尼克洛克伍德的似乎是最受欢迎的。

于 2013-09-21T00:16:35.657 回答