2009-02-28 2 views
0

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

ответ

1

Получается, что это опечатка. В строках, где я звоню setContents, я отправляю ему UIImage, а не CGImage. Отправка правильного типа привела к ожидаемому поведению.

Смежные вопросы