Скриншот основной анимации на iPad - PullRequest
9 голосов
/ 27 декабря 2010

Я создаю сцену с Core Animation, которая выглядит как заставка на старом Apple TV.Непрерывный поток изображений (каждое a CALayer) проходит вертикально, снизу вверх.Чтобы достичь этого, после того, как анимация слоя заканчивается, когда он выходит из поля зрения, он перемещается обратно вниз, назначается новое изображение и реанимируется.Это происходит в методе делегата animationDidStop.Тем не менее, я заметил, что если я сделаю снимок экрана при запуске приложения на iPad, слои никогда не переместятся в нижнюю часть и не будут видны снова.Я выделил проблему, и я уверен, что снимки экрана вызывают ее.Это заставляет меня думать, что снимок экрана влияет на время анимации.Итак ...

  1. Какое влияние оказывает создание снимка экрана на iDevice на анимацию?
  2. Есть ли лучший способ добиться этого эффекта?

Ответы [ 2 ]

1 голос
/ 30 мая 2012

Вы всегда можете попробовать сделать снимок экрана программно на основе содержимого представления, а затем сохранить его как снимок экрана. Я не знаю ваших объектов, но это то, что я делал раньше. Весь мой контент для скриншота находится в 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.

0 голосов
/ 10 июля 2012

Вы можете использовать presentationLayer для захвата скриншота во время анимации анимации. т.е. [CaptureView.layer presentationLayer]

вы также можете обнаружить касание во время анимации в presentationLayer CALayer.

...