2009-02-28 20 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];

私も同じ層を再利用し、ちょうどsetContentsを経由して別のCGImage(:)に設定内容を試してみた、これはまた、層は(より具体的にレンダリングを停止します:ここで私が使用しているコードです不透明度が0に設定されているかのようにアニメーション化されますが、まだ1)と考えられます。私は、ビューレイヤのサブレイヤを列挙することによって、レイヤが実際にビューのレイヤツリーにあることを確認しました。彼らは正しいイメージを持っているように見え、正しいポジションにいるように見えます。彼らはただ引き分けません。どんな助けでも大歓迎です。

答えて

1

これはタイプミスの結果です。 setContentsを呼び出す行では、CGImageではなくUIImageを送信しています。正しいタイプを送信すると、予期した動作が発生しました。

関連する問題