[英]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.