con*_*are 5 iphone graphics core-animation calayer ios
我有一个邪恶的时间试图让图像显示在一个CALayer.contents
.它似乎相当直接,但无论我做什么,我都无法渲染图像.在CALayer
我可以看到它的背景颜色和圆角半径,但图像不会加载渲染罚款.
你在这里看到的是一个CAGradientLayer
应用了蒙版的子类.内部正方形是我希望图像显示的位置,并且它被添加为子CAGradientLayer
类的子图层.
设置它的代码非常简单.在init
:
self.imageLayer = [CALayer layer];
self.imageLayer.cornerRadius = kDefaultCornerRadius;
self.imageLayer.backgroundColor = [UIColor darkGrayColor].CGColor;
[self addSublayer:self.imageLayer];
Run Code Online (Sandbox Code Playgroud)
然后,我设置图像:
- (void)setImage:(UIImage *)image {
self.imageLayer.contents = (id)image.CGImage;
[self.imageLayer setNeedsDisplay];
}
Run Code Online (Sandbox Code Playgroud)
最后,在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];
Run Code Online (Sandbox Code Playgroud)
我已经知道或检查过的事情:
[UIImage imageNamed:@"info.png"]
正在代码中的其他地方使用,实际上是显示和图像.1x时为16x16,2x时为32x32init
,setImage:
,setFrame
;这里发生了什么?
Kur*_*vis 13
删除此行:
[self.imageLayer setNeedsDisplay];
Run Code Online (Sandbox Code Playgroud)
-setNeedsDisplay
告诉图层它需要重绘其内容.由于您已经为图层提供了内容,因此您不希望CA放弃该内容并要求替换.
归档时间: |
|
查看次数: |
8180 次 |
最近记录: |