Я не уверен, как это сделать с помощью CATiledLayer, но книга «Программирование IOS 4», написанная Мэттом Нойбургом, содержит раздел «Масштабирование с детализацией», в котором описывается, как сделать нечто подобное с помощью UIScrollView.
UIScrollView предлагает поддержку масштабирования пинч-аутов в его содержимом, но он просто увеличивает масштабирование с масштабированием без масштабирования с преобразованием масштаба, а не перерисовывает его содержимое при более высоком zoomScale.Поэтому, чтобы обеспечить масштабирование, которое на самом деле показывает повышенную детализацию, вам нужно добавить некоторую логику.
В основном, книга предлагает вам реализовать scrollViewDidEndZooming: withView: atScale: так, чтобы он (1) сбрасывал zoomScale UIScrollView к егозначение по умолчанию 1,0, и (2) удаляет представление содержимого и предоставляет новое представление с содержимым в требуемом истинном масштабе увеличения.Вам нужно ввести свой собственный ivar, чтобы отслеживать этот истинный масштаб вручную.В результате при дальнейшем увеличении масштаба и монотонном увеличении истинного масштаба UIScrollView содержит последовательность различных представлений и продолжает циклически изменять собственный масштаб в пределах своих границ, от 1,0 до максимального значения, затем сбрасывая до 1,0, затем от 1,0 до максимального значения.и т. д. В книге приведен скелетный пример (стр. 506 в 1-м издании, вторая печать книги).
Как бы вы использовали это для бесконечного увеличения?Если вам не нужно действительно бесконечное масштабирование, вы можете просто выполнить описанное выше с очень большим диапазоном для истинного масштаба.
Если вы хотите действительно бесконечное масштабирование, вы не можете отслеживать свой уровень масштабирования с помощью конечногопеременная для истинного масштаба.Вместо этого вы должны изменить scrollViewDidEndZooming: withView: atScale: так, чтобы он (1) сбрасывал zoomScale в UIScrollView к его значению по умолчанию, равному 1,0, (1) удаляет представление содержимого и предоставляет новое представление, где новое представление в новом zoomScale из1.0 визуально идентичен удаленному представлению на старом zoomLevel.Таким образом, поскольку пользователь продолжал увеличивать масштаб с помощью жестов пинч-аута, UIScrollView будет периодически циклически изменяться от 1,0 до максимума, незаметно заменяя базовый вид в каждом цикле, между жестами пользователя.