2010-10-30 39 views
13

Tôi đang thiết lập màu nền của UIView của tôi (đó là trong một UIViewController) như sau:iPhone - Nền của UIViewColor - sử dụng png có độ trong suốt?

myView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"myTransparentBG.png"]]; 

Tôi thậm chí đã cố gắng rối tung với [myView setOpaque:NO]; nhưng hình ảnh không xuất hiện trong suốt. Nó có nền đen. Tôi có thể sửa lỗi chương trình này không? Nếu không, làm thế nào chúng ta phải thiết lập một nền tảng trong suốt để xem của chúng tôi?

Điều này có vẻ như là một câu hỏi đáng lẽ phải được hỏi trước đây, nhưng tôi không thể tìm thấy câu trả lời.

Trả lời

32

Khi sử dụng mẫu trong suốt, sau khi đặt thuộc tính backgroundColor, bạn cần đặt thuộc tính opaque thành NO trên cả chế độ xem và lớp của nó. Đây là mẫu:

UIView* paperView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,700)]; 
paperView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"paper.png"]]; 

[paperView.layer setOpaque:NO]; 
paperView.opaque = NO; 
+0

Aha, đây là câu trả lời đúng. Tôi đã không thiết lập tài sản mờ đục của lớp. Cảm ơn! – chaiwalla

+1

Điều thú vị là bạn phải đặt thuộc tính mờ * sau * bạn đặt hình nền. Phải là một phần của công cụ hiển thị. –

+0

Cảm ơn Sam, tôi đã có cùng một vấn đề. Ngoài ra: hai dòng cuối cùng của đoạn mã này cũng làm như vậy. – titaniumdecoy

-1

Sử dụng tính năng này: myView.backgroundColor = [UIColor clearColor];

Điều này sẽ đặt thành nền trong suốt.

+0

Trên đó? Tôi muốn hình ảnh làm nền. Tôi có các phần tử giao diện người dùng khác trong chế độ xem. – RyanJM

+0

Nếu u đặt màu UIView thành clearColor, thì nó sẽ trong suốt. Tùy thuộc vào nơi hình ảnh và các chế độ xem khác được sắp xếp, bạn có thể chơi với chúng. – Istvan

0

Tôi chưa bao giờ thực sự làm điều này, nhưng đây là những gì tôi muốn thử.

Đặt UIView's .backgroundColor thành [UIColor clearColor]. Sau đó, đặt UIImageView chứa PNG của bạn dưới dạng mục "thấp nhất" trên chồng của các bản xem trước của UIView. Đảm bảo màu nền của UIImageView cũng rõ ràng.

+0

Trên thực tế, không có nhiều lý do để giữ cho UIView, tôi đã kết thúc bằng cách sử dụng UIImageView và sau đó thêm tất cả các phần tử khác dưới dạng phần phụ của nó và nó hoạt động thực sự tốt. – RyanJM

+0

@RyanJM Oh yeah. Đôi khi tôi quên rằng như một subview UIView, UIImageView có thể vui vẻ giữ subviews ... –

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