簡體   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