我有一个或多个代表/填充整个屏幕的 CALayers。我想使用许多带有图像的小矩形来从网格结构中填充那些 CALayers。
我尝试为每个 Rect 分配自己的 CALayer 和 UIImage。使用超过 6000 个 CALayers,结果非常缓慢。现在我正在寻找一种不使用那么多 CALayer 的方法。也许只有顶级的。
那么是否有一种机制可以在 CALayer 中为 UIImages 分配他们自己的 Rect ?
慢/坏代码示例:
- (void)createLayer{
CALayer *currentLayer = self.layer;
_layerArray = [[NSMutableArray alloc] initWithCapacity:WIDTH*HEIGHT];
int cellSize = self.bounds.size.width / WIDTH;
double xOffset = 0;
CGRect cellFrame = CGRectMake(0, 0, cellSize, cellSize);
NSUInteger cellIndex = 0;
cellFrame.origin.x = xOffset;
for (int i = 0; i < WIDTH; i++)
{
cellFrame.origin.y = 0;
for (int j = 0; j < HEIGHT; j++, cellIndex++)
{
if([[self.levelState.boardChanges objectAtIndex:(i*HEIGHT)+j] intValue]==1){
{
NSNumber *currentCell = [self.levelState.board objectAtIndex:cellIndex];
CALayer *sublayer = [CALayer layer];
sublayer.frame = cellFrame;
if (currentCell.intValue == 1)
{
[[_layerArray objectAtIndex:(i*HEIGHT)+j ] setContents:(id) [UIImage imageNamed:@"image1.png"].CGImage];
}
else if (currentCell.intValue == 0)
{
[[_layerArray objectAtIndex:(i*HEIGHT)+j ] setContents:(id) [UIImage imageNamed:@"image2.png"].CGImage];
}
[currentLayer addSublayer:sublayer];
[_layerArray addObject:sublayer];
}
}
cellFrame.origin.y += cellSize;
}
cellFrame.origin.x += cellSize;
}
}