2009-07-13 26 views
7

Hiện tại, có rất nhiều câu trả lời về cách đặt nền cố định tùy chỉnh cho UITableView. Nhưng có bất kỳ mẹo nào để làm cho ảnh nền cuộn cùng nhau với các ô bảng không?Hình nền cuộn cho UITableView?

Cảm ơn!

Trả lời

3

.

UIImageView *background = [[UIImageView alloc]initWithImage: [UIImage imageNamed: @"background.jpg"]]; 
    [tableView addSubview: background]; 
    [tableView sendSubviewToBack: background]; 
+1

Cảm ơn, đã thử, nhưng tôi nghĩ thông báo sendSubviewToBack không hoạt động như trong trường hợp này: UIImageView được định vị trên các ô. Bất kì manh mối nào? –

+1

Cách tiếp cận này là lần thử đầu tiên của tôi. Gửi nó về phía sau vẫn đặt nó trên các tế bào mặc dù. –

-6

Một câu trả lời có thể là - rõ ràng - đã có trên stackoverflow:

self.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"desk.png"]]; 

Ref: iPhone - Setting background on UITableViewController

Chỉnh sửa: Đó không phải là một câu trả lời hoàn hảo, tôi biết :)

+2

Điều đó sẽ sử dụng các phần của nền trong mỗi ô. Vì vậy, nếu bạn có hình nền cao hơn thì một ô sẽ không hoạt động. – OgreSwamp

+6

Đây KHÔNG phải là câu trả lời đúng vì hình nền sẽ không cuộn cùng với bảng. – Bobo

+1

Điều này có nghĩa vụ phải hoạt động không? Tôi đang đối mặt với cùng một vấn đề mà @OgreSwamp đã đề cập, mặc dù nền có thể cuộn được với khung nhìn mà ô sử dụng các phần của nền trong mỗi ô. Nếu giải pháp này không hoạt động, tại sao điều này được chấp nhận là câu trả lời chính xác? –

3

Tôi sẽ nghĩ rằng câu trả lời là phân lớp UITableView và ghi đè lên layoutSubviews. Trong UITableView, bạn nên tạo một thuộc tính trỏ đến UIImageView nền.

Khi bạn ghi đè layoutSubviews chỉ cần viết

-(void) layoutSubviews { 
    [self sendSubviewToBack: backgroundImageView]; 
    [super layoutSubviews]; 

} 
+0

Đáng buồn thay, điều này là không đủ để sửa tất cả các trường hợp góc trong đó chế độ xem ngẫu nhiên. – steipete

+0

như thế nào? nó thực sự giải quyết được vấn đề, tôi đã thử nó. Bạn đang nói về những trường hợp góc nào? – thewormsterror

+0

Đôi khi, UITableView làm xáo trộn lượt xem. Nó không xác định, và khác nhau giữa các phiên bản iOS. Đừng dùng cái này. Tôi đã sử dụng một cuộn UIImageView được định vị lại trong scrollViewDidScroll – steipete

6

Bạn cần phải thiết lập các hình nền thông qua tài sản của UITableView backgroundColor:

self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background.png"]]; 
+1

Nếu nó không phải là một 'UITableViewController', bạn phải sử dụng' tableView.backgroundColor = ... ' – Jochen

+0

Điều này tốt đẹp của – Eugene

+1

Điều này cũng làm việc trong iOS6? Tôi cố gắng này trong viewDidLoad của tôi nhưng không có gì xảy ra nó vẫn cho thấy bg grouptableview tiêu chuẩn. – JonEasy

0

Câu trả lời này cũng có thể là hữu ích. Background image that's scrollable and in synch with the UITable scrolling

Nó liên quan đến một chút thủ đoạn với Chế độ xem bảng.

Bạn phải tạo một bảng nền riêng biệt là một nô lệ của bảng tiền cảnh của bạn, và nó sử dụng KVO để nghe thuộc tính contentOffset của khung nhìn nền trước.

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