[英]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).
您可能想要设置layer
的position
属性。
您需要创建两个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.