Прошёл месяц с тех пор, как вы спросили, но это всё ещё может быть полезно.Я только начал использовать CATiledLayer сегодня вечером.Я думаю, что идея CATiledLayer заключается в том, что вы добавляете его в представление:
CATiledLayer *tiled = [CATiledLayer layer];
[self.view.layer addSublayer:tiled];
и что вы устанавливаете делегат, реализуя только один метод:
MyTLDelegate *myDelegate = [[MyTLDelegate alloc] init];
tiled.delegate = myDelegate;
// I haven't checked if CATiledLayer retains myDelegate, check this!
...
@implementation MyTLDelegate {
-(void)drawLayer:(CATiledLayer *)layer inContext:(CGContextRef)ctx
{
CGRect dirtyRect = CGContextGetClipBoundingBox(ctx);
// draw!
}
Это в основномвсе, что нужно для этого, вы можете просто нарисовать, как будто все координатное пространство просто там.Так что вам нужно всего лишь немного изменить класс Graph, чтобы он мог выступать в качестве делегата CATiledLayer.В моем случае это было потрачено 20 минут, что улучшило пользовательский опыт на несколько порядков.(по сравнению с утомительной прокруткой, масштабированием и перерисовкой)
пс.это только тот псевдокод, который вы запрашивали, вам может понадобиться дополнительный клей, чтобы добиться успеха, например, в отношении качества и / или размеров кадра.