0

我正在实施 a CATiledLayerinto a 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绘图消息中异步下载数据。

4

1 回答 1

0

您可以像在任何其他情况下一样使用 NSURLConnection 之类的东西异步下载数据。下载完成后,告诉图层重新绘制,然后调用 -drawLayer:inContext: ,此时您只需抓取下载的图像。换句话说,不要在 -drawLayer 中下载你的数据,也不要使用 -dataWithContentsOfURL ,它是同步的,默认情况下是阻塞的。

于 2010-06-04T05:48:56.697 回答