Начиная с iOS 4.0, вы можете использовать drawRect:
вместо drawLayer:inContext:
. Это вопросы и ответы от Apple объясняют это: http://developer.apple.com/library/ios/#qa/qa1637/_index.html. Важным моментом является то, что drawRect: в 4 теперь поточно-ориентирован, и вы можете использовать графические функции UIKit.
Вам все еще нужно переопределить этот метод, чтобы использовать CATileLayer
:
+(Class)layerClass
{
return [CATiledLayer class];
}
Но теперь вы можете просто использовать drawRect:
-(void)drawRect:(CGRect)rect
{
//normal drawing routines here.
}
Прямоугольник, который доставляется методу, будет размером ваших плиток, и вам нужно определить, что нужно нарисовать в конкретном прямоугольнике. Сила CATiledLayer
в том, что она требует только рисования плиток, которые отображаются на экране. Он также использует фоновые потоки и работает очень быстро.
Я не использовал CATiledLayer
с UIViews, только большие изображения. Подклассы UIViews
имеют собственные реализации drawRect:
? Я думаю, вам нужно определить, какие представления будут отображаться в текущем прямоугольнике, и вызвать их метод drawRect:
.
Использование drawRect:
только для iOS 4.0 и более поздних версий, оно не будет работать для более старых версий.