【问题标题】:How to make a screenshot of view with animation in progress如何制作动画进行中的视图截图
【发布时间】:2014-01-03 10:36:56
【问题描述】:

当我在导航栏下播放动画时,我需要为导航栏创建模糊效果。动画非常简单 CAKeyframeAnimation 实例。但即使我使用下面列表中的任何方法随机创建单个快照,它也不起作用:

  • [UIWindow drawViewHierarchyInRect: afterScreenUpdates:YES/NO]
  • [CALayer renderInContext:]
  • [UIView snapshotViewAfterScreenUpdates:YES/NO]

我看到的只是空白图像。

是否可以捕捉运动中的动画? Mb 有一些不同的方式来模糊动画?

【问题讨论】:

  • 在您的情况下使用家庭加电源按钮是否有效,或者您是否需要在应用程序中多次使用屏幕截图?
  • @meaning-matters,是的,我需要 UIImage 实例,之后我可以使用它来模糊并在导航栏中显示它。

标签: ios animation uiview


【解决方案1】:

很简单的使用FXBlurView:https://github.com/nicklockwood/FXBlurView

它具有动态模糊的属性,因此您不必在每个点都截取屏幕截图。

@property (nonatomic, getter = isDynamic) BOOL dynamic;

此属性控制 FXBlurView 是动态更新,还是仅在视图添加到其父视图时更新一次。默认为是。请注意,动态设置为 NO,您仍然可以通过调用 setNeedsDisplay 或 updateAsynchronously:completion: 来强制更新视图。动态模糊非常消耗 CPU,因此您应该始终在执行动画之前立即禁用动态视图以避免卡顿。但是,如果您在屏幕上有多个 FXBlurViews,那么使用 setUpdatesDisabled 方法禁用更新比将动态属性设置为 NO 更简单

PS:确保添加所有必要的框架以使其正常工作

【讨论】:

  • 是的,我也检查过这个解决方案。它也不适用于 CAAnimation。它几乎可以完美地与 tableview、scrollviews 等配合使用。
  • 非常小鬼:你确定模糊视图在导航栏上和动画层下面
【解决方案2】:

模糊视图最简单的方法是添加 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;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-17
    相关资源
    最近更新 更多