Objective C显示一系列图像

时间:2011-11-18 20:29:44

标签: iphone arrays image

所以我正在创造一个应该拥有动态生成的珊瑚礁的游戏。珊瑚礁有几个包含我试图展示的图像(100x100)的物体。我可以显示图像但CPU使用率很高。问题出在我的绘图代码中我相信:

-(void)drawCoralWithContext:(CGContextRef)ctx{
    for(Coral *c in coral){
        CGRect coralRect = CGRectMake (0, 0, [c size], [c size]);

        CGLayerRef layerRef = CGLayerCreateWithContext(ctx, CGSizeMake([c size], [c size]), NULL);
        CGContextRef layerCtx = CGLayerGetContext(layerRef);
        coralRect = CGRectMake (0, 0, [c size], [c size]);
        layerRef = CGLayerCreateWithContext(ctx, CGSizeMake([c size], [c size]), NULL);
        layerCtx = CGLayerGetContext(layerRef);
        CGContextDrawImage(layerCtx, coralRect, [c image]);
        CGContextSaveGState(ctx);
        CGContextTranslateCTM(ctx, c.position.x, c.position.y);
        CGContextDrawLayerAtPoint(ctx, [c position], layerRef);
        CGContextRestoreGState(ctx);
        CFRelease(layerRef);
    }
}

传递的上下文:     CGContextRef ctx = UIGraphicsGetCurrentContext();

我需要减少处理量。非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:1)

你看过CATiledLayer了吗?它的文档不是很好,但是为绘制一个充满许多小图像的屏幕提供了很多性能提升。有一些来自旧WWDC的示例代码,您可能想查看本教程http://www.cimgf.com/2011/03/01/subduing-catiledlayer/