У меня есть пользовательский вид карты, который сделан из UIScrollView
.Подвид прокрутки поддерживает CATiledLayer
.Здесь все отлично работает.Панорамирование и масштабирование загружает новые фрагменты карты, и все работает хорошо.
То, что я хочу сделать, - это захватывать кадры видео анимации для этого вида прокрутки.По сути, я хочу создать видео с анимированными изменениями в представлениях прокрутки contentOffset
и zoomScale
.
Я знаю, что концепция является разумной, поскольку я могу получить функцию частного API UIGetScreenImage()
, чтобы захватывать экран приложения, скажем, со скоростью 10 кадров в секунду, комбинировать эти изображения, и я получаю анимации воспроизведения, которые являются плавными и имеютвременные кривые, используемые анимацией просмотра прокрутки.
Моя проблема, конечно, в том, что я не могу использовать закрытый API.Прохождение альтернатив, описанных Apple здесь , оставляет мне почти один предположительно правильный вариант: запросить CALayer
до renderInContext
и взять UIGraphicsGetImageFromCurrentImageContext()
из этого.
Похоже, это просто не работает с CATiledLayer
представлениями.Захваченное, не масштабированное изображение - это то, что захватывается, как будто плитки с более высоким разрешением никогда не загружаются.В некоторой степени это имеет смысл, учитывая, что CATiledLayer
использует фоновые потоки для повышения производительности, и вызов renderInContext
из основного потока может не перехватить эти обновления.Результат аналогичен, даже если я отрисовываю плиточный слой presentationLayer
.
Существует ли санкционированный Apple способ захвата изображения вида с поддержкой CATiledLayer
во время анимации содержащего прокрутки вида?Или в любой момент?