Возможно, я просто пропустил что-то очень простое, но всякий раз, когда я добавляю CALayers после просмотра, они не визуализируются. Вот код, я использую:CALayer не рендеринг при добавлении после просмотра видимого
[[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). Я проверил, что слои фактически находятся в дереве слоев представления, перечисляя подслои уровня представления. Они, похоже, имеют правильные изображения и находятся в правильных положениях, они просто не рисуют. Любая помощь будет принята с благодарностью.