Стандартный способ добиться этого в приложении для iPhone - создать обычный UIScrollView того размера, который вам нужен, и заполнить его либо напрямую CATiledLayer , если вы чувствуете себя смелым или с пользовательским подклассом UIView, который использует CATiledLayer и реализует - (void)drawLayer:(CALayer*)layer inContext:(CGContextRef)context
.
CATiledLayer предоставляет те же возможности, что и Safari, - это хорошо для представлений, которые намного больше экрана и которые рендерится дорого, но вы не хотите нарушать плавность пользовательского опыта. Он будет запрашивать плитки, как и когда они понадобятся, в фоновом потоке, а затем постепенно увеличивать их (в соответствии с затуханием любой длины, так что вы можете заставить их появляться мгновенно, если захотите), когда они будут готовы. Если ваша программа действительно всегда может идти в ногу с прокруткой, и вы запросили мгновенное появление, то не будет никаких доказательств того, что в этом есть асинхронный шаг.
Примером, на который обычно указывают люди, является этот , но если вы новичок в реализации собственных подклассов UIView, то, возможно, стоит посмотреть, например. этот урок . Затем посмотрите на свойство + layerClass в UIView и различные свойства CATiledLayer (который, я думаю, вам также может понадобиться создать подкласс, поскольку + fadeDuration является методом класса).