我已经阅读了几十个关于在早期版本的 iOS 中模仿 iOS 7 模糊效果的问题。但这里出现的基本问题是,iOS 7UIKit
真的有一种很好且方便的方式来制作模糊 UIView
吗?这对我来说似乎很合乎逻辑。任何帮助表示赞赏。
3 回答
Apple 提供了示例代码来模糊 iOS 7 风格的任何 UIImage。
如有必要,请转到 Apple Developer 下载并登录。搜索“imageeffects”调出WWDC 2013 示例代码条目,并下载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”</a>(或直接下载幻灯片)了解这些课程的介绍。
原来的
不,它没有。Apple 并没有公开方便地执行此操作的接口。例如,如果您阅读了这个讨论,Rincewind 的回复应该清楚地表明 Apple 没有为此提供公共 API,并且他们使用的私有 API 有严重的限制并且可能会改变。
您必须自己实现模糊效果。您可能希望使用新-[UIView drawViewHierarchyInRect:afterScreenUpdates:]
方法来捕获背景视图的外观,然后CIFilter
对其应用 a 以执行模糊。
UIKit 没有方便的方法来实现这种效果。但是,Github 上有一些库可以轻松实现此效果。尼克洛克伍德的似乎是最受欢迎的。