我正在CATiledLayer
中实施UIScrollView
。在CATiledLayer
中,我有一个绘制图层的功能:
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
CGContextTranslateCTM(ctx, 0.0f, 0.0f);
CGContextScaleCTM(ctx, 1.0f, -1.0f);
CGRect box = CGContextGetClipBoundingBox(ctx);
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"urlhere"]];
UIImage *image = [[UIImage alloc] initWithData:data];
CGContextDrawImage(ctx, box, [image CGImage]);
[image release];
[data release];
}
问题是当每个磁贴下载时,它会阻止其他磁贴的下载。我非常希望这些瓷砖是并行下载的。特别是它阻止了我无法控制的另一个UI元素的下载。
基本上,我只需要知道如何在CATiledLayer
绘图消息中异步下载数据。
答案 0 :(得分:0)
您可以像使用NSURLConnection之类的任何其他情况一样异步下载数据。下载完成后,告诉图层重新绘制,然后调用-drawLayer:inContext:此时您只需抓取下载的图像。换句话说,不要在-drawLayer中下载数据,也不要使用-dataWithContentsOfURL,它是默认的同步和块。