2009-02-28 5 views
0

저는 정말 단순한 것이 빠졌을 것입니다. 그러나 CALayers를 추가 할 때마다 뷰가 표시 된 후에 렌더링되지 않습니다. 여기에 내가 사용하고 코드입니다 : 나는 또한 : 같은 층을 재사용 그냥 setContents를 통해 (다른의 CGImage에 대한 내용을 설정하려고했습니다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];

는,이 또한 더 구체적으로 (렌더링 중지 레이어를 발생 불투명도가 0으로 설정된 것처럼 움직입니다. 여전히 1이라고 생각했습니다. 뷰 레이어의 하위 레이어를 열거하여 레이어가 실제로 뷰의 레이어 트리에 있는지 확인했습니다. 그들은 올바른 이미지를 갖고 올바른 위치에있는 것처럼 보이지만 그리지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다.

답변

1

오타가 원인 인 것으로 나타났습니다. setContents를 호출하는 줄에서 CGImage가 아닌 UIImage를 보냅니다. 올바른 유형을 보내면 예상되는 동작이 발생했습니다.

관련 문제