Рисование UIImage в CALayer.contents не отображает данные изображения

У меня ужасное время, когда я пытаюсь отобразить изображение в CALayer.contents. Это кажется довольно простым, но я не могу заставить изображение отображаться независимо от того, что я делаю. CALayerотображается нормально, так как я вижу цвет фона и радиус угла, но изображение не загружается.

enter image description here

Здесь вы видите подкласс CAGradientLayerс примененной маской. Внутренний квадрат — это то место, где я хотел бы показать изображение, и он добавляется как подуровень подкласса CAGradientLayer.

Код для настройки довольно прост. Вinit:

self.imageLayer = [CALayer layer];
self.imageLayer.cornerRadius = kDefaultCornerRadius;
self.imageLayer.backgroundColor = [UIColor darkGrayColor].CGColor;
[self addSublayer:self.imageLayer];

Затем позже я установил изображение:

- (void)setImage:(UIImage *)image {
    self.imageLayer.contents = (id)image.CGImage;
    [self.imageLayer setNeedsDisplay];
}

Наконец, в пределахsetFrame:

CGFloat imageSize = self.bounds.size.width - 2*kDefaultMargin;
[self.imageLayer setBounds:CGRectMake(0.0, 0.0, imageSize, imageSize)];
[self.imageLayer setPosition:CGPointMake(self.bounds.size.width/2.0f, kDefaultMargin + imageSize/2.0f)];
[self.imageLayer setNeedsDisplay];

Вещи, которые я уже знаю или проверил:

  1. Очевидно, что слой добавлен правильно, что видно по тому, что он виден.
  2. Образ добавлен и работает. [UIImage imageNamed:@"info.png"]используется в другом месте кода и на самом деле показывает и изображение. Это 16x16 при 1x и 32x32 при 2x
  3. Код вызывается в правильном логическом порядке:init, setImage:, setFrame;

Что здесь происходит?

5
задан coneybeare 10 June 2012 в 22:51
поделиться