2009-07-22 34 views
23

Trong ứng dụng của tôi, tôi có chế độ xem bảng với customViewCells. Tôi đã phân lớp lớp UITableViewCell và thêm một hình ảnh sẽ tải không đồng bộ và cho văn bản tôi sử dụng cell.textLabel.text = @"someThext".Thay đổi màu nền văn bản có nhãn UITableViewCell để xóa

Đối với các ô, màu nền được đặt theo cách khác là [UIColor darkGrayColor][UIColor whiteColor].

Khi tôi chạy ứng dụng trong trình mô phỏng và trên điện thoại, textLabel của ô có màu nền trắng. Tôi muốn thiết lập nó là rõ ràng, bởi vì tôi muốn màu nền của tế bào được đầy đủ không phải là một dải sau đó màu trắng sau đó một dải.

Trong phương thức init của tế bào tùy chỉnh của tôi tôi đã thêm, hy vọng rằng màu trắng sẽ biến thành màu đỏ, nhưng nó không có bất kỳ tác:

[self.textLabel setBackgroundColor:[UIColor redColor]]; 

Tôi cũng đã cố gắng:

self.textLabel.backgroundColor = [UIColor redColor]; 

Nhưng điều này cũng không hoạt động ... nếu tôi thêm một UILabel như một subview, màu nền của nhãn có thể được thiết lập, nhưng tôi không muốn làm điều đó bởi vì khi tôi xoay điện thoại tôi muốn nhãn của tôi tự động phóng to.

Bất kỳ ý tưởng nào về việc thiết lập màu nền của cell.textLabel không hoạt động?

Cảm ơn bạn

Trả lời

23

Vấn đề là UIKit đặt màu nền ô trong phương pháp -setSelected. Tôi đã có phương pháp nhưng không có self.textLabel.backgroundColor = [UIColor clearColor]; self.detailTextLabel.backgroundColor = [UIColor clearColor]; trong đó vì vậy tôi đã thêm chúng và vấn đề được đề cập trong hình đã được sửa.

- (void)setSelected:(BOOL)selected animated:(BOOL)animated { 
    [super setSelected:selected animated:animated]; 
    self.textLabel.backgroundColor = [UIColor clearColor]; 
    self.detailTextLabel.backgroundColor = [UIColor clearColor]; 
} 
0

Để thiết lập một màu nền rõ ràng bạn có thể sử dụng clearColor:

[[cell textLabel] setBackgroundColor:[UIColor clearColor]]; 

Đây có phải là những gì bạn nghĩa là gì?

+0

tôi đã thử nghiệm đã và không hoạt động ... đây là liên kết có ảnh chụp màn hình vấn đề của tôi .. http://img269.imageshack.us/img269/9001/picture1wim.png. Nhãn không phải do tôi tạo ra là nhãn do UITableCell cung cấp. bất kỳ ý tưởng tại sao setBackgroundColor sẽ không hoạt động? –

+2

tôi đặt ở đó [Màu đỏ uColor] để xem thuộc tính có được đặt .. nhưng nó bị bỏ qua, nó vẫn trắng ... –

0

xem bài này: How do I set UITableViewCellSelectionStyle property to some custom color?

trong trường hợp của bạn chỉ cần sử dụng một UIView với màu nền trắng

+0

tôi nghĩ bạn không hiểu vấn đề của tôi ... vấn đề không phải là màu nền của ô .. rằng tôi có thể đặt nó vào bất cứ điều gì tôi muốn .. vấn đề của tôi là tôi không thể thiết lập màu nền của textLabel của ô. Nếu tôi đặt [[cell textLabel] setBackgroundColor: [UIColor redColor]]; nền của nhãn đó vẫn trắng. bài viết mà bạn đã đề cập trước đó đề cập đến việc thay đổi màu nền của ô khi chọn nó, để tôi muốn màu xanh mặc định. –

+0

nếu tôi thêm UILabel làm chế độ xem phụ, màu nền sẽ không bị bỏ qua. Đối với các textLabel được xây dựng và detailTextLabel của ô mà các chủ sở hữu tôi đặt cho màu nền được bỏ qua ... –

+0

SorinA, bạn không thể thay đổi màu nền của textLabel cũng như detailTextLabel trong bất kỳ phương thức giao thức UITableViewDataSource nào ngoại trừ "willDisplayCell" phương pháp. Vui lòng tham khảo bài viết trước của tôi, ở đó bạn có thể tìm thấy giải pháp http://stackoverflow.com/questions/1164459/changing-uitableviewcell-textlabel-background-color-to-clear/2643451#2643451 –

0

Tôi không thử nó, nhưng đây là một đoán ... Để vẽ nhanh hơn tài sản mờ đục của nhãn có thể được đặt thành true theo mặc định.

Hãy thử

cell.titleLabel.opaque = NO; 
cell.titleLabel.backgroundColor = [UIColor clearColor]; 

Nếu điều đó không làm việc, hoặc tôi sẽ có lẽ chỉ bỏ vào thời điểm này và tạo UILabel của riêng mình cho các tế bào.

+1

trong OS 3.0 mà ô không hoạt động ' t trả lời titleLabel. Tôi đã thử những gì bạn đã nói với cell.textLabel nhưng hiệu ứng là như nhau .. cảm ơn bạn –

0

để đặt màu của nhãn văn bản bạn nên làm điều này: t.textColor = [Màu UICYouWantRGB];

+0

Xin chào Amelie, tôi muốn đặt màu nền của nhãn tiêu đề của ô để xóa, không đặt màu văn bản của nhãn. –

47

Nếu bạn không muốn phải phân lớp UITableViewCell bạn chỉ có thể thêm này:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { 
    [[cell textLabel] setBackgroundColor:[UIColor clearColor]]; 
    [[cell detailTextLabel] setBackgroundColor:[UIColor clearColor]]; 
} 
+0

CẢM ƠN, tôi đã phát điên khi cố gắng làm việc này trên điện thoại 3.x! – jv42

3

Trông như Apple đã thay đổi một cái gì đó ở đây.Làm chính xác điều này trong các công trình iOS4:

self.textLabel.backgroundColor = [UIColor xxxColor]; 
self.detailTextLabel.backgroundColor = [UIColor xxxColor]; 

Ít nhất đến mức nền nhãn trong suốt hoặc có màu nền. Vẫn không thể thiết lập màu nền riêng.

Điều này đã được khắc phục, nhưng có một chút ngạc nhiên khi thử nghiệm nếu bạn phát triển với SDK cơ bản 4.1 và phút. triển khai 3.1 cho iPhone cổ điển và iPad.

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