2009-12-24 14 views
6

Theo tài liệu Mac Dev Center, bạn sẽ có thể đặt thuộc tính nội dung của một CALayer và tự động hiển thị. Tuy nhiên, tôi vẫn không thể có được một hình ảnh đơn giản để hiển thị bằng cách thêm một lớp con vào thư mục gốc của UIView sau đó. Tôi đã thử nhiều biến thể khác nhau; Dưới đây là những gì tôi có cho đến thời điểm này:iPhone: Làm cách nào để thêm lớp vào lớp gốc của UIView để hiển thị hình ảnh có thuộc tính nội dung?

(Lưu ý: Tôi biết có nhiều cách khác để hiển thị hình ảnh; vì mục đích của tôi tôi muốn sử dụng CALayer cho một số công cụ phức tạp hơn tôi sẽ tham gia).

(trong viewDidDisplay() của ViewController):

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); 

Bất cứ ai biết những gì tôi đang làm sai?

Cảm ơn!

+0

Cảm ơn bạn Ben - bạn đã hiểu. Vấn đề của tôi là contentRect quá lớn - không nhận ra đó là một không gian điều phối đơn vị. Thật thú vị, hình ảnh được đặt cao và bên trái (tôi chỉ nhìn thấy phần dưới bên phải 1/4 của nó) - Tôi phải điều chỉnh vị trí để có được góc trên bên trái của hình ảnh để ngồi ở trên cùng- góc phải của màn hình. Cảm ơn! –

Trả lời

0

Bạn không cần phải thiết lập các contentsRect (và nếu bạn làm thế, nó phải ở trong đơn vị phối hợp không gian, có lẽ chỉ CGRectMake(0, 0, 1.0, 1.0).

Bạn có thể muốn thiết lập 's position tài sản.

5
layer

Bạn có thể tải hình ảnh vào một UIImageView, được decended từ UIView và do đó đã nó sở hữu một layer riêng biệt.

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

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

Bạn cần phải tạo hai CALayer. Đây là cách hoàn hảo để hiển thị ngày e hình ảnh trong 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]; 

Tôi nghĩ giải pháp của nó là vấn đề của bạn.

Các vấn đề liên quan