繁体   English   中英

iPhone:如何向UIView的根层添加图层以显示包含content属性的图像?

[英]iPhone: How do I add layers to UIView's root layer to display an image with the content property?

根据Mac Dev Center文档,您应该能够设置CALayer的contents属性并自动渲染。 但是,我仍然无法通过稍后向UIView的根添加子层来显示简单的图像。 我尝试了多种不同的变化; 这是我到目前为止所拥有的:

(注意:我知道还有其他渲染图像的方法;出于我的目的,我想将CALayer用于一些我将要进入的更复杂的东西)。

(在ViewController的viewDidDisplay()中):

 CALayer *theLayer = [CALayer layer];
 [[[self view] layer] addSublayer:theLayer];
 theLayer.contents = (id)[[UIImage imageNamed:@"mypic.png"] CGImage];
 theLayer.contentsRect = CGRectMake(0.0f, 0.0f, 300.0f, 300.0f);
 theLayer.bounds = CGRectMake(0.0f, 0.0f, 300.0f, 400.0f);

谁知道我做错了什么?

谢谢!

您可以将图像加载到UIImageView中,该UIImageView是从UIView中删除的,因此具有自己的图层属性。

UIImageView *imgView = [[UIImageView alloc] initWithFrame:frame];
imgView.image = [UIImage imageNamed:@"mypic.png"];

[[[self view] layer] addSublayer:[imgView layer]];
[imgView release];

你不需要设置contentsRect (如果你这样做,它应该在单位坐标空间,可能只是CGRectMake(0, 0, 1.0, 1.0).

您可能想要设置layerposition属性。

您需要创建两个CALayer。 这是在CALayer中显示图像的完美方式。

CALayer *pulseLayer_ = [[CALayer layer] retain];

pulseLayer_.backgroundColor = [[UIColor whiteColor] CGColor];
pulseLayer_.bounds = CGRectMake(0., 0., 80., 80.);
pulseLayer_.cornerRadius = 12.;
pulseLayer_.position = self.view.center;

[self.view.layer addSublayer:pulseLayer_];


CALayer *imageLayer = [CALayer layer];

imageLayer.frame = pulseLayer_.bounds;
imageLayer.cornerRadius = 10.0;
imageLayer.contents = (id) [UIImage imageNamed:@"jacklogo.png"].CGImage;
imageLayer.masksToBounds = YES;

[pulseLayer_ addSublayer:imageLayer];

[pulseLayer_ setNeedsDisplay];

我认为它可以解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM