2011-10-29 10 views
5

Có thể che phủ UIView bằng hình ảnh mà không cần sử dụng UIImageView từ Trình tạo giao diện không?Lớp phủ UIView với hình nền

Nếu không, bạn sẽ thực hiện như thế nào trong mã?

Trả lời

3

nếu do nằm phía trên một UIView bạn có nghĩa là vẽ nền của nó với một hình ảnh, nó có thể được thực hiện như thế này:

someView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"yourImage.png"]]; 

Bạn cũng có thể thêm một UIImageView mới bao gồm UIView của bạn theo mã, Init UIImageView của bạn với cùng một khung Rect như UIView của bạn và thêm nó như là một subview.

+0

Tuyệt vời, cảm ơn bạn. Vì vậy, không có cách nào để làm điều đó từ IB, phải không? – JAM

+0

Phải, bởi vì hàm colorWithPatternImage là một phương thức tùy chỉnh, nó không phải là một tùy chọn xuất hiện trên IB. chỉ có một màu duy nhất để lựa chọn. mặc dù nhiệm vụ tương tự có thể được thực hiện với IB bằng cách tạo UIImageView bao gồm chế độ xem của bạn và có cùng một khung. khi bạn không muốn chế độ xem của mình được bao phủ hay không, bạn có thể chỉ cần đặt thuộc tính .hidden thành YES/NO. –

+0

Tôi có lẽ sẽ đi cho 'UIImageView' tùy chọn như tôi đoán nó sẽ được tối ưu hóa hơn so với tạo ra một mô hình mà đồ họa cốt lõi sau đó sẽ phải rút ra sau khi tìm ra ốp lát vv –

5

Từ các tài liệu UIView:

hình ảnh dựa trên nền - Đối với quan điểm rằng hiển thị nội dung tương đối tĩnh, xem xét sử dụng một đối tượng UIImageView với recognizers cử chỉ thay vì subclassing và vẽ hình ảnh chính mình. Ngoài ra, bạn cũng có thể sử dụng đối tượng UIView chung và gán hình ảnh của bạn làm nội dung của đối tượng CALayer của chế độ xem.

Sử dụng tùy chọn thứ hai, để thiết lập someView để có một nền tảng của yourImage.png:

someView.layer.contents = (id)[[UIImage imageNamed:@"yourImage.png"] CGImage];