猿问
下载APP

如何生成类似于iOS 7模糊视图的效果?

如何生成类似于iOS 7模糊视图的效果?

我试图从Apple公开发布的iOS 7示例屏幕中复制这个模糊的背景:

这个问题建议对以下内容应用CI过滤器,但这是一种完全不同的方法。很明显iOS 7没有捕获下面视图的内容,原因有很多:

  1. 进行一些粗略测试,捕获下面视图的屏幕截图并应用具有足够大半径的CIGaussianBlur滤镜来模仿iOS 7的模糊样式需要1-2秒,即使在模拟器上也是如此。

  2. iOS 7模糊视图能够模糊动态视图,例如视频或动画,没有明显的延迟。

任何人都可以假设他们可以使用什么框架来创建这种效果,并且是否可以使用当前的公共API创建类似的效果?

编辑:(来自评论)我们并不完全知道Apple是如何做到的,但我们可以做出任何基本的假设吗?我们可以假设他们正在使用硬件,对吧?

效果是否在每个视图中都是自包含的,这样效果实际上并不知道它背后的含义是什么?或者,必须根据模糊的工作原理,考虑模糊背后的内容?

如果效果背后的内容是相关的,我们可以假设Apple正在接收下面内容的“提要”并持续呈现它们模糊吗?


慕桂英3389331
浏览 48回答 3
3回答

MMTTMM

这是一个非常简单的方法:https://github.com/JagCesar/iOS-blur只需复制UIToolbar图层就可以了,AMBlurView会为您完成。好吧,它不像控制中心那么模糊,但是模糊不清。

45度呼吸

iOS8回答了这些问题。- (instancetype)initWithEffect:(UIVisualEffect *)effect或斯威夫特:init(effect effect: UIVisualEffect)

慕容4345310

您可以在此页面中找到Apple's DEMO的解决方案: WWDC 2013,查找并下载UIImageEffects示例代码。然后用@Jeremy Fox的代码。我改成了- (UIImage*)getDarkBlurredImageWithTargetView:(UIView *)targetView{     CGSize size = targetView.frame.size;     UIGraphicsBeginImageContext(size);     CGContextRef c = UIGraphicsGetCurrentContext();     CGContextTranslateCTM(c, 0, 0);     [targetView.layer renderInContext:c]; // view is the view you are grabbing the screen shot of. The view that is to be blurred.     UIImage *image = UIGraphicsGetImageFromCurrentImageContext();     UIGraphicsEndImageContext();     return [image applyDarkEffect];}
打开App,查看更多内容
随时随地看视频慕课网APP
我要回答