标准iOS 7模糊实现

时间:2013-09-20 23:15:03

标签: cocoa-touch uikit ios7

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

3 个答案:

答案 0 :(得分:27)

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

Go to Apple Developer downloads并在必要时登录。搜索“imageeffects”以显示 WWDC 2013示例代码条目,并下载 iOS_UIImageEffects 示例代码。

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

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

这不会自动对视图实时模糊 - 请参阅FXBlurView,它通过自动快照其超级视图来执行类似的技术。但它可能是性能密集型的:首先考虑是否可以通过静态模糊图像来实现您想要的效果,而不是试图“生活” - 移动内容。

答案 1 :(得分:26)

更新

从iOS 8.0开始( iOS 7),UIKit提供UIVisualEffectViewUIBlurEffect。您可以观看WWDC 2014 Session 419 “Advanced Graphics and Animations for iOS Apps”(或仅download the slides)来了解这些类的介绍。

ORIGINAL

不,它没有。 Apple没有公开这样做的界面。例如,如果您通读this discussion,Rincewind的回复应该明确表示Apple不会为此提供公共API,并且他们使用的私有API具有严重限制并且可能会发生变化。

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

答案 2 :(得分:4)

UIKit没有方便的方法来实现这种效果。但是,Github上有一些库很容易实现这种效果。 Nick Lockwood's似乎是最受欢迎的。