У меня ужасное время, когда я пытаюсь отобразить изображение в CALayer.contents
. Это кажется довольно простым, но я не могу заставить изображение отображаться независимо от того, что я делаю. CALayer
отображается нормально, так как я вижу цвет фона и радиус угла, но изображение не загружается.
Здесь вы видите подкласс 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];
Вещи, которые я уже знаю или проверил:
[UIImage imageNamed:@"info.png"]
используется в другом месте кода и на самом деле показывает и изображение. Это 16x16 при 1x и 32x32 при 2xinit
, setImage:
, setFrame
;Что здесь происходит?