2009-02-28 6 views
0

Je manque probablement quelque chose de vraiment simple mais chaque fois que j'ajoute CALayers après que la vue soit visible, ils ne sont pas rendus. Voici le code que je utilise:CALayer non rendu après ajout de vue visible

[[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];

J'ai aussi essayé de réutiliser les mêmes couches et la mise juste le contenu à un autre CGImage (via setContents :), ce qui provoque également la couche d'arrêt de rendu (plus précisément il s'anime comme si l'opacité avait été réglée à 0 pensait que c'était encore 1). J'ai vérifié que les calques sont réellement dans l'arborescence des calques de la vue en énumérant les sous-calques de la couche de vue. Ils semblent avoir les bonnes images et être dans les bonnes positions, ils ne dessinent tout simplement pas. Toute aide serait grandement appréciée.

Répondre

1

Il s'avère que cela résulte d'une faute de frappe. Dans les lignes où j'appelle setContents, je lui envoie un UIImage plutôt qu'un CGImage. L'envoi du type correct a entraîné le comportement attendu.

Questions connexes