Iphone 在视图可见后添加CALayer时不渲染

Iphone 在视图可见后添加CALayer时不渲染,iphone,core-animation,Iphone,Core Animation,我可能只是错过了一些非常简单的东西,但每当我在视图可见后添加Calayer时,它们都不会渲染。以下是我使用的代码: [[imageLayers objectAtIndex:0] removeFromSuperlayer]; [imageLayers removeObjectAtIndex:0]; [[imageLayers objectAtIndex:0] removeFromSuperlayer]; [imageLayers removeObjectAtIndex:0]; firstImage

我可能只是错过了一些非常简单的东西,但每当我在视图可见后添加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]; [[imageLayers对象索引:0]从SuperLayer移除]; [imageLayers removeObjectAtIndex:0]; [[imageLayers对象索引:0]从SuperLayer移除]; [imageLayers removeObjectAtIndex:0]; firstImageOffset=(firstImageOffset+2)%[pieceCache计数]; int topIndex=(firstImageOffset+6)%[pieceCache计数]; int bottomIndex=(firstImageOffset+7)%[pieceCache计数]; float xPos=[(CALayer*)[ImageLastObject]位置].x+kShiftXPixels; CALayer*layer1=[CALayer层]; [第1层设置帧:CGRectMake(0,0,kImageWidth,kImageHeight)]; [layer1 setContents:(id)[UIImage ImageName:[[pieceCache objectAtIndex:topIndex]objectForKey:@“image_name”]]; [[self view]layer]addSublayer:layer1]; [第1层设置位置:CGPointMake(xPos,kTopRowYPos)]; [图像层添加对象:层1]; CALayer*layer2=[CALayer层]; [layer2设置帧:CGRectMake(0,0,kImageWidth,kImageHeight)]; [layer2 setContents:(id)[UIImage ImageName:[[pieceCache objectAtIndex:bottomIndex]objectForKey:@“image_name”]]; [[self view]layer]addSublayer:layer2]; [第2层设置位置:CGPointMake(xPos、kBottomRowYPos)]; [图像层添加对象:层2];
我还尝试重用相同的层,只是将内容设置为不同的CGImage(通过setContents:),这也会导致层停止渲染(更具体地说,它会设置动画,好像不透明度设置为0,但仍然为1)。通过枚举视图层的子层,我已经验证了层实际上位于视图的层树中。他们似乎有正确的图像和正确的位置,他们只是不画。任何帮助都将不胜感激。

事实证明,这是打字错误造成的。在调用setContents的行中,我向它发送的是UIImage而不是CGImage。发送正确的类型会导致预期的行为