我试图让一个图片在
以下是一个应用了掩码的
设置代码相当简单,在
最后,在
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"]
在代码的其他地方被使用,并且实际显示图像。 它在1x时为16x16,在2x时为32x32。 - 代码按照正确的逻辑顺序调用:
init
,setImage:
,setFrame
;
这里到底发生了什么?
[self.imageLayer setNeedsDisplay]
。 - Kurt Revis