2010-03-05 47 views
9

tôi có câu hỏi đơn giản khá đơn giản (tôi hy vọng như vậy). Làm thế nào để tôi thay đổi màu tiêu đề phần trong một UITableview từ mặc định màu xanh sang màu đen trong suốt? Cảm ơn trước.Thay đổi màu của phần tiêu đề trong UITableview

+1

Đây là một câu hỏi tương tự: http://stackoverflow.com/questions/813068/uitableview-change-section-header -color – nylund

Trả lời

18

bạn cần phải thực hiện phương pháp này trong giao thức UITableViewDelegate:

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 

Dưới đây là một liên kết đến documentation

... và làm một cái gì đó như thế này (sub màu của riêng bạn):

UIView *sectionView = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, tableView.bounds.size.width, 22)] autorelease]; 
[sectionView setBackgroundColor:[UIColor blackColor]]; 
return sectionView; 

Bạn cũng có thể sử dụng số nguyên của phần để thay thế màu hoặc tương tự. Tôi nghĩ chiều cao mặc định cho các phần là 22, nhưng bạn có thể làm cho nó bất cứ điều gì bạn muốn. Đây có phải là ý của bạn? Hi vọng điêu nay co ich.

+0

Cảm ơn, tôi nghĩ rằng sẽ có một số loại kích hoạt trong IB để chuyển sang màu đen. Nhưng dù sao, cảm ơn. –

+1

Nhưng vui lòng lưu vào bộ nhớ cache các chế độ xem đó. Có lỗi trong UIKit gây ra để yêu cầu xem tiêu đề khi tableView đang được cuộn, vì vậy phương pháp này sẽ được gọi cho mỗi pixel-bù đắp trong khi di chuyển. 22px thực sự là chiều cao mặc định. – Joost

+1

hi, tôi hiểu phương pháp này được gọi khi cuộn di chuyển diễn ra ... làm thế nào chúng ta có thể lưu bộ nhớ cache này để lưu các lượt xem không cần thiết được tạo ra vv ..? nếu bạn có thể đăng bình luận hoặc cập nhật cho bài viết của bạn, nó sẽ rất hữu ích. cảm ơn bạn – Pavan

0
- (UIView *) tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section 
    { 
    UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0,tableView.bounds.size.width, 30)]; 
    if (section == 0) 
    [headerView setBackgroundColor:[UIColor redColor]]; 
    else 
    [headerView setBackgroundColor:[UIColor clearColor]]; 
    return headerView; 
    } 
20

Đây là câu hỏi cũ nhưng tôi nghĩ câu trả lời cần được cập nhật.

Phương pháp này không liên quan đến việc xác định chế độ xem tùy chỉnh của riêng bạn.
Trong iOS 6 trở lên, bạn có thể dễ dàng thay đổi màu nền và màu văn bản bằng cách xác định phương thức ủy quyền

- (void)tableView:(UITableView *)tableView 
     willDisplayHeaderView:(UIView *)view 
     forSection:(NSInteger)section
.

Ví dụ:

 
- (void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger)section 
{ 
    // Background color 
    view.tintColor = [UIColor blackColor]; 

    // Text Color 
    UITableViewHeaderFooterView *header = (UITableViewHeaderFooterView *)view; 
    [header.textLabel setTextColor:[UIColor whiteColor]]; 

    // Another way to set the background color 
    // Note: does not preserve gradient effect of original header 
    // header.contentView.backgroundColor = [UIColor blackColor]; 
} 

Trích từ bài của tôi ở đây: https://happyteamlabs.com/blog/ios-how-to-customize-table-view-header-and-footer-colors/

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