改變UITableView的header、footer背景顏色,這是個很常見的問題。以前知道的通常作法是,經過實現tableView: viewForHeaderInSection:
返回一個自定義的View,裏面什麼都不填,只設背景顏色。可是今天發現一個更簡潔的作法。函數
對於iOS 6及之後的系統,實現這個新的delegate函數便可:ui
- (void)tableView:(UITableView *)tableView willDisplayFooterView:(UIView *)view forSection:(NSInteger)section { view.tintColor = [UIColor clearColor]; }
還能夠改變文字的顏色:code
- (void)tableView:(UITableView *)tableView willDisplayFooterView:(UIView *)view forSection:(NSInteger)section { UITableViewHeaderFooterView *footer = (UITableViewHeaderFooterView *)view; [footer.textLabel setTextColor:[UIColor whiteColor]]; }
寫這篇文章的目的,主要是想記錄兩種錯誤的嘗試。
當看到這個Delegate函數時,第一反應是想固然地這樣作:get
- (void)tableView:(UITableView *)tableView willDisplayFooterView:(UIView *)view forSection:(NSInteger)section { view.backgroundColor = [UIColor clearColor]; }
這樣作是無效的,不管對什麼顏色都無效。it
- (void)tableView:(UITableView *)tableView willDisplayFooterView:(UIView *)view forSection:(NSInteger)section { UITableViewHeaderFooterView *footer = (UITableViewHeaderFooterView *)view; footer.contentView.backgroundColor = [UIColor redColor]; }
這樣作設成不透明的顏色就沒問題。但設成clearColor,看到的仍是灰色。io