【问题标题】:Core Animation Screenshot on iPadiPad 上的核心动画截图
【发布时间】:2011-05-30 22:40:08
【问题描述】:

我正在使用 Core Animation 构建一个看起来类似于旧 Apple TV 上的屏幕保护程序的场景。连续的图像流(每个 CALayer)从底部到顶部垂直通过。为了实现这一点,当图层的动画移出视图时结束后,它会重新定位回底部,分配一个新图像,然后重新设置动画。这发生在animationDidStop 委托方法中。但是,我注意到如果我在 iPad 上运行应用程序时截取屏幕截图,图层永远不会重新定位到底部,也不会再次出现。我已经隔离了这个问题,我确定是截图导致了它。这让我认为截屏会对动画时间产生影响。所以...

  1. 在 iDevice 上截屏对动画有什么影响?
  2. 有没有更好的方法来达到这个效果?

【问题讨论】:

  • 你用什么方法截屏?睡眠 + 主页按钮或 Xcode Organizer 或 UIScreenGetImage()?
  • 我在设备上使用睡眠 + 主页按钮。我尝试了 Xcode 的屏幕截图,没有问题。考虑到这一点,我开始认为问题与在设备上截屏时出现的白色“闪光”动画有关。
  • 在您的-animationDidStop: 方法中,您是否根据动画是否完成执行相同的操作?截屏时,可能动画被标记为未完成。

标签: ipad ios core-animation screenshot calayer


【解决方案1】:

您始终可以尝试根据视图的内容以编程方式捕获屏幕截图,然后将其保存为屏幕截图。我不知道你的对象,但这是我以前做过的。我的所有截图内容都在 CaptureView 中。

CGRect screenRect = [[UIScreen mainScreen] bounds];
UIGraphicsBeginImageContext(CaptureView.frame.size);

CGContextRef ctx = UIGraphicsGetCurrentContext();
[[UIColor clearColor] set];
CGContextFillRect(ctx, screenRect);

[CaptureView.layer renderInContext:ctx];

UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext();
UIImageWriteToSavedPhotosAlbum(screenImage, nil, nil, nil);
UIGraphicsEndImageContext();

你的动画是固定的UIImageView吗?如果您要检测的图像视图是否离开屏幕,只需使用 frame.origin.y 与 0 相比即可。

【讨论】:

    【解决方案2】:

    您可以在动画制作动画时使用presentationLayer 来截取屏幕截图。 即[CaptureView.layer presentationLayer]

    您还可以在CALayer 的presentationLayer 中制作动画时检测触摸。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-26
      • 1970-01-01
      相关资源
      最近更新 更多