我已经阅读过几十个关于在早期版本的iOS中模仿iOS 7模糊效果的问题。但是,这里出现的根本问题是iOS 7的UIKit
是否真的有一种方便的方式让任何 UIView
变得模糊?这对我来说似乎很合乎逻辑。任何帮助表示赞赏。
答案 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提供UIVisualEffectView
和UIBlurEffect
。您可以观看WWDC 2014 Session 419 “Advanced Graphics and Animations for iOS Apps”(或仅download the slides)来了解这些类的介绍。
不,它没有。 Apple没有公开这样做的界面。例如,如果您通读this discussion,Rincewind的回复应该明确表示Apple不会为此提供公共API,并且他们使用的私有API具有严重限制并且可能会发生变化。
您必须自己实施模糊效果。您可能希望使用新的-[UIView drawViewHierarchyInRect:afterScreenUpdates:]
方法捕获背景视图的外观,然后对其应用CIFilter
以执行模糊。
答案 2 :(得分:4)
UIKit没有方便的方法来实现这种效果。但是,Github上有一些库很容易实现这种效果。 Nick Lockwood's似乎是最受欢迎的。