2010-01-16 38 views
15

Tôi muốn sử dụng hình ảnh cố định làm nền trong chế độ xem bảng được nhóm theo nhóm đơn giản trong chương trình iPhone của tôi. Thật không may, không có vấn đề gì tôi làm, nền luôn luôn là màu trắng. Tôi đã theo dõi một số giải pháp được cho là trên trang web này và những người khác không có kết quả. Đây là mã relavant trong phương pháp viewDidLoad của lớp xem bảng điều khiển (lưu ý, mã này sử dụng một màu xanh rắn hơn là một hình ảnh để đơn giản):Thêm UIView vào sau UITableView trong mã UITableViewController

self.tableView.opaque = NO; 
self.tableView.backgroundColor = [UIColor clearColor]; 
UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
backgroundView.backgroundColor = [UIColor blueColor]; 
[self.tableView.window addSubview:backgroundView]; 
[backgroundView release]; 

tôi nghi ngờ rằng tôi không định vị backgroundView xem ở đúng nơi. Tôi đã thử sendToBack :, bringToFront :, và những người khác nhưng tôi luôn chỉ nhận được một nền trắng. Có thể làm điều này từ bên trong UITableViewController không? Tôi có phải sử dụng Trình tạo giao diện không?

Trả lời

19

subviews sở hữu Sử dụng UITableView 's để thêm nền của bạn có:

[self.tableView addSubview:backgroundView]; 
[self.tableView sendSubviewToBack:backgroundView]; 

Ngoài ra, di động của bạn/tiêu đề vv sẽ có thể cần phải được thiết lập để minh bạch cho backgroundView của bạn để được hiển thị.

+0

Thuộc tính 'subviews' trả về một' NSArray', không trả lời phương thức '-addSubview:'. –

+0

Bắt tốt - cố định. Bạn chỉ cần phương thức 'addSubview' của' UIView'. –

3

Tôi chỉ cần đặt thuộc tính backgroundColor của chính UITableView. Bạn có thể sử dụng phương pháp +colorWithPatternImage: UIColor để chuyển đổi một UIImage thành một UIColor (mà sẽ lặp lại trên toàn bộ xem, nếu không đủ lớn):

// From within UITableViewController's -viewDidLoad: 
UIImage *image = [UIImage imageNamed:"yourImage.png"]; 
self.tableView.backgroundColor = [UIColor colorWithPatternImage:image];

Chỉ cần thêm yourImage.png[email protected] để gói ứng dụng của bạn, kích thước nó một cách thích hợp, và bạn đã sẵn sàng.

+1

Điều đó dẫn đến điều gì đó cực kỳ kỳ lạ. –

+0

Dường như chỉ hoạt động với khoảng cách giữa các ô. Tiêu đề bảng, tiêu đề phần và không gian ở hai bên của ô không khớp với hình ảnh. –

+0

Nó sẽ hiển thị màu theo không gian hiển thị có sẵn, vì vậy hình ảnh trông "dán" vào các hàng trên cùng hoặc dưới cùng của bảng. – leolobato

14

Kể từ iOS 3.2, UITableView có thuộc tính được gọi là backgroundView. Vì vậy, thay vì thêm bất kỳ bản xem trước nào, chỉ cần thực hiện việc này:

self.tableView.backgroundView = backgroundView; 

Chế độ xem bảng sẽ điều chỉnh kích thước nền thành kích thước của bảng. Chế độ xem nền sẽ không di chuyển với các ô của bảng. Nói cách khác, nếu chế độ xem nền là chế độ xem hình ảnh, hình ảnh sẽ xuất hiện ở trạng thái khóa trên màn hình với các ô lướt qua nó. Các khung nhìn bảng mặc định cũng dường như có các thông số để làm cho các phần tử thích hợp của ô sẽ tự động xóa nếu có một khung nhìn nền.

+0

Đặt backgroundColor sử dụng hình ảnh sẽ gây ra sự cố trên các vùng bên ngoài của mỗi hàng ô. Điều này làm việc tuyệt vời. – nh32rg

+0

Đối với tôi trong iOS7/8 nếu tôi đặt backgroundView, nó bao gồm các ô. –

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