Возможно, я просто упускаю что-то действительно простое, но всякий раз, когда я добавляю CALayers после того, как видимость видна, они не отображаются. Вот код, который я использую:
[[imageLayers objectAtIndex:0] removeFromSuperlayer];
[imageLayers removeObjectAtIndex:0];
[[imageLayers objectAtIndex:0] removeFromSuperlayer];
[imageLayers removeObjectAtIndex:0];
firstImageOffset = (firstImageOffset + 2) % [pieceCache count];
int topIndex = (firstImageOffset + 6) % [pieceCache count];
int bottomIndex = (firstImageOffset + 7) % [pieceCache count];
float xPos = [(CALayer*)[imageLayers lastObject] position].x + kShiftXPixels;
CALayer* layer1 = [CALayer layer];
[layer1 setFrame:CGRectMake(0, 0, kImageWidth, kImageHeight)];
[layer1 setContents:(id)[UIImage imageNamed:[[pieceCache objectAtIndex:topIndex] objectForKey:@"image_name"]]];
[[[self view] layer] addSublayer:layer1];
[layer1 setPosition:CGPointMake(xPos, kTopRowYPos)];
[imageLayers addObject:layer1];
CALayer* layer2 = [CALayer layer];
[layer2 setFrame:CGRectMake(0, 0, kImageWidth, kImageHeight)];
[layer2 setContents:(id)[UIImage imageNamed:[[pieceCache objectAtIndex:bottomIndex] objectForKey:@"image_name"]]];
[[[self view] layer] addSublayer:layer2];
[layer2 setPosition:CGPointMake(xPos, kBottomRowYPos)];
[imageLayers addObject:layer2];
Я также попытался повторно использовать те же слои и просто установить содержимое для другого CGImage (через setContents :), это также заставляет слой останавливать рендеринг (более конкретно, он анимируется, как если бы непрозрачность была установлена на 0 это все еще 1). Я проверил, что слои на самом деле находятся в дереве слоев представления, перечислив подслои слоя представления. Похоже, они имеют правильные изображения и находятся в правильных положениях, они просто не рисуют. Любая помощь будет принята с благодарностью.