CALayer не рендерится при добавлении после просмотра видимым - PullRequest
0 голосов
/ 28 февраля 2009

Возможно, я просто упускаю что-то действительно простое, но всякий раз, когда я добавляю CALayers после того, как видимость видна, они не отображаются. Вот код, который я использую:

[[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 Ответ

1 голос
/ 01 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...