当我在其下的视图上播放动画时,我需要为导航栏创建模糊效果。动画非常简单CAKeyframeAnimation
实例。但即使我使用下面列表中的任何方法随机创建单个快照,它也不起作用:
[UIWindow drawViewHierarchyInRect: afterScreenUpdates:YES/NO]
[CALayer renderInContext:]
[UIView snapshotViewAfterScreenUpdates:YES/NO]
我只看到空白图片。
是否可以捕捉动画中的动画? Mb有一些不同的模糊动画的方法吗?
答案 0 :(得分:1)
使用FXBlurView非常简单:https://github.com/nicklockwood/FXBlurView
它具有动态模糊的属性,因此您不必在每个点都截取屏幕截图。
@property (nonatomic, getter = isDynamic) BOOL dynamic;
此属性控制FXBlurView是否动态更新,或仅在视图添加到其超级视图时更新一次。默认为YES。注意,动态设置为NO,您仍然可以通过调用setNeedsDisplay或updateAsynchronously强制视图更新:completion:。动态模糊是非常cpu密集的,因此您应该在执行动画之前立即禁用动态视图以避免卡顿。但是,如果您在屏幕上有多个FXBlurViews,那么使用setUpdatesDisabled方法禁用更新比使用动态属性设置为NO更简单
PS:确保添加所有必要的框架以使其正常工作
答案 1 :(得分:0)
模糊视图的最简单方法是添加UIToolbar,只需更改Alpha值即可更改模糊。
self.toolbar = [[UIToolbar alloc]initForAutoLayout];
[self.view addSubview:self.toolbar];
[self.toolbar autoPinEdgeToSuperviewEdge:ALEdgeLeft withInset:0];
[self.toolbar autoPinEdgeToSuperviewEdge:ALEdgeRight withInset:0];
[self.toolbar autoPinEdgeToSuperviewEdge:ALEdgeTop withInset:NAVBAR_HEIGHT];
[self.toolbar autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:0];
self.toolbar.alpha = 0.5;