У меня есть пользовательский вид карты, который сделан из UIScrollView
. Подвью просмотра прокрутки поддерживается CATiledLayer
. Здесь все отлично работает. Panning & масштабирование загружает новые плитки карты, и все работает хорошо.Съемка снимка с поддержкой CATiledLayer в UIScrollView
Что я хочу сделать, так это захватить кадры видео анимации в этот вид прокрутки. По сути, я хочу создать видео анимированных изменений в виде прокрутки contentOffset
и zoomScale
.
Я знаю, что концепция звучит так, как я могу получить частную функцию API UIGetScreenImage()
, чтобы захватить экран приложения, скажем, 10 кадров в секунду, объединить эти изображения, и я получаю анимационные анимации, которые являются гладкими и имеют кривые времени, используемые анимации прокрутки.
Моя проблема, конечно, в том, что я не могу использовать частный API. Пройдя альтернативы, описанные Apple, here оставляет меня с довольно вероятным вариантом: прошу CALayer
- renderInContext
и взять UIGraphicsGetImageFromCurrentImageContext()
.
Это, похоже, не работает с CATiledLayer
-backed views. Блочное, не увеличенное изображение - это то, что захвачено, как будто плитки с более высоким разрешением никогда не загружаются. Это несколько имеет смысл, учитывая, что CATiledLayer
рисует в фоновом потоке производительность, а вызов renderInContext
из основного потока может не поймать эти обновления. Результат аналогичен, даже если я создаю слой черепичного слоя.
Есть ли у Apple способ санкционированного изображения захвата изображения CATiledLayer
во время просмотра анимации прокрутки? Или в любой момент, если на то пошло?
Кто-то отправил ответ здесь: http://stackoverflow.com/questions/5526545/render-large-catiledlayer-into-smaller- площадь –