改变UITableView的headerView、footerView背景颜色

问题

改变UITableView的header、footer背景颜色,这是个很常见的问题。之前知道的一般做法是,通过实现tableView: viewForHeaderInSection:返回一个自定义的View,里面什么都不填,只设背景颜色。但是今天发现一个更简洁的做法。

更简洁的方法

对于iOS 6及以后的系统,实现这个新的delegate函数即可:

- (void)tableView:(UITableView *)tableView willDisplayFooterView:(UIView *)view forSection:(NSInteger)section {
    view.tintColor = [UIColor clearColor];
}

还可以改变文字的颜色:

- (void)tableView:(UITableView *)tableView willDisplayFooterView:(UIView *)view forSection:(NSInteger)section
{
    UITableViewHeaderFooterView *footer = (UITableViewHeaderFooterView *)view;
    [footer.textLabel setTextColor:[UIColor whiteColor]];
}

错误的尝试

写这篇文章的目的,主要是想记录两种错误的尝试。
当看到这个Delegate函数时,第一反应是想当然地这样做:

错误尝试1

- (void)tableView:(UITableView *)tableView willDisplayFooterView:(UIView *)view forSection:(NSInteger)section {
    view.backgroundColor = [UIColor clearColor];
}

这样做是无效的,无论对什么颜色都无效。

错误尝试2

- (void)tableView:(UITableView *)tableView willDisplayFooterView:(UIView *)view forSection:(NSInteger)section
{
    UITableViewHeaderFooterView *footer = (UITableViewHeaderFooterView *)view;
    footer.contentView.backgroundColor = [UIColor redColor];
}

这样做设成不透明的颜色就没问题。但设成clearColor,看到的还是灰色。

文/戴仓薯(简书作者)
原文链接:http://www.jianshu.com/p/bfb237f5c20c
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

时间: 2024-10-08 17:46:36

改变UITableView的headerView、footerView背景颜色的相关文章

ExtJS4.2 Grid知识点三:改变表格Grid单元格背景颜色

在ExtJS4.2 Grid知识点一:改变表格Grid单元格文字颜色一文中讲解了如何改变单元格中文字颜色,接下来在本章学习如何改变Grid中单元格的背景颜色,显示结果如图片: 在线演示  /  示例代码 实现方式同样是为Grid中该列自定义renderer函数,查询ExtJS 4.2 API得知,Ext.grid.column.Column的renderer属性可以是一个函数也可以是字符串,这个知识点是通过函数来实现的.函数参数列表如下: value : 当前待渲染的单元格值,即表格中某行某列的

jQuery改变鼠标经过行的背景颜色

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-

将UITableView背景颜色设置为透明的方法

最近在使用UITableView做页面的时候,被一个问题困扰很久,如何将UITableView的页面的背景颜色设置为透明, 显示效果为:每个TableView的Cell只显示图片,lbl等内容,但背景色为透明,即显示为其所在的的UIView的背景色. 在百度上搜索了很多方法都无效,今天终于解决: 一直在纠结于UITableView和UITableViewCell的背景色设置为透明,但无效,最终发现,需要设置一下UITableViewCell的 一个lableText的backgroundcolo

div css鼠标悬停锚文本超链接文字背景颜色或图片变化

div css鼠标悬停锚文本超链接文字背景颜色或图片变化(体感音乐) css鼠标悬停超链接文字上时背景改变,鼠标经过文字链接时(悬停),文字的背景图片发生改变(出现背景图片或背景颜色). 鼠标经过悬停在超链接文字上时背景颜色或背景图片出现或改变教程篇.(体感音乐) 此DIV CSS布局技巧其实是对a标签做鼠标经过CSS样式.利用以下代码: a{...} 原始超链接默认样式设置a:hover{...}鼠标悬停经过时超链接锚文本CSS样式(扩展阅读:ie6 hover)一.链接文字无背景鼠标经过悬停

改变cell的背景颜色

#define DARK_BACKGROUND  [UIColor colorWithRed:151.0/255.0 green:152.0/255.0 blue:155.0/255.0 alpha:1.0]; - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{    cell.backgroun

UITableviewCell点击改变背景颜色, 标题高亮.

 改变UITableViewCell选中时背景色: cell.selectedBackgroundView = [[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"cellart.png"]] autorelease];   // 点击背景图片 cell.selectedBackgroundView = [[[UIView alloc] initWithFrame:cell.frame] autorelease];    

iOS中通过设置CSS改变WebView字体大小,颜色,背景颜色

因为WebView自带的属性是不可以改变字体大小颜色这些需求的,只能通过改变css样式,内置来解决.在百度上搜了半天很多不靠谱,现在给出几种解决方案如下: 1.第一种方式:在WebView的代理方法webViewDidFinishLoad中: 字体大小: [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '12

Android RadioGroup的RadioButton 选择改变字体颜色和背景颜色

RadioGroup <RadioGroup android:id="@+id/client_charge_radiogroup" android:layout_width="200dp" android:layout_height="40dp" android:layout_marginLeft="5dp" android:layout_alignParentRight="true" android

MFC 如何改变对话框的默认背景颜色(转)

下面介绍三种方法:实现改变对话框的默认背景颜色: (1)可以在CLotteryApp::InitInstance()设置更新对话框的背景颜色 调用SetDialogBkColor(RGB(160,32,240)) 即可以改变背景颜色 注意这里绘制的颜色是针对程序中所有的对话框 SetDialogBkColor(RGB(0,0,255),RGB(255,0,0)); 前一个RGB是背景色,后一RGB是文本颜色 (2)也可以再CLotteryDlg::OnPaint() 函数里的 else 之后括号