`
zani
  • 浏览: 356522 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

UITableViewCell的背景

 
阅读更多

 

 

http://haoxiang.org/2010/12/uitableviewcell-background/

 

 

 

 

UITableViewCell是一个很常用的View,通常我们都是直接使用它。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
 
    static NSString *cellIdentifier = @"CellIdentifier";
 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (!cell)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier] autorelease];
    }
 
    cell.textLabel.text = [NSString stringWithFormat:@"Line: %d", indexPath.row];
 
    return cell;
}

得到这个效果:

现在我们给tableViewCell加上点背景色:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
 
    static NSString *cellIdentifier = @"CellIdentifier";
 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (!cell)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier] autorelease];
    }
 
    cell.textLabel.text = [NSString stringWithFormat:@"Line: %d", indexPath.row];
    // cell.backgroundColor = [UIColor blueColor];
    cell.contentView.backgroundColor = [UIColor blueColor];
    return cell;
}

我们不应该直接使用cell.backgroundColor。Cell本身是一个UIView,我们所看到的部分其实只是它的一个Subview,也就是cell.contentView。所以,如果直接改变cell本身的背景色,依然会被cell.contentView给覆盖,没有效果。

不过,通过cell.contentView.backgroundColor来改变背景色还不是最好的Practice. 如果通过

tableView.editing = YES;

进入Edit模式,就会出现问题。

Cocoa提供的按钮背景色为透明。因为ContentView被移开,下面是tableView的颜色,已经不是cell的一部分了。

所以,最好的方式应该是通过cell.backgroundView来改变cell的背景。按照文档说明,backgroundView始终处于cell的最下层,所以,将cell里的其它subview背景设为[UIColor clearColor],以cell.backgroundView作为统一的背景,应该是最好的方式。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
 
    static NSString *cellIdentifier = @"CellIdentifier";
 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (!cell)
    {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier] autorelease];
    }
 
    cell.textLabel.text = [NSString stringWithFormat:@"Line: %d", indexPath.row];
    cell.textLabel.backgroundColor = [UIColor clearColor];
 
    UIView *backgrdView = [[UIView alloc] initWithFrame:cell.frame];
    backgrdView.backgroundColor = [UIColor blueColor];
    cell.backgroundView = backgrdView;
    [backgrdView release];
 
    return cell;
}

效果:

分享到:
评论

相关推荐

    ios 自定义cell背景的更改

    本篇文章将深入探讨如何在iOS中实现自定义UITableViewCell背景的切换,以及与之相关的知识点。 首先,我们需要了解UITableViewCell的基本结构。默认情况下,UITableViewCell具有一个背景视图和一个分离线。我们可以...

    UITableViewCell的渐变背景

    在iOS开发中,`UITableViewCell` 是用于展示表格数据的基本组件,而为其添加渐变背景可以提升界面的视觉效果。在不依赖预设图片的情况下,我们可以借助Apple提供的Core Graphics框架,也就是Quartz 2D,来实现自定义...

    代码实现 UITableView与UITableViewCell

    这包括添加自定义子视图、设置背景颜色、字体样式等。可以通过继承UITableViewCell并覆盖`awakeFromNib`方法来实现。 6. **数据绑定**: 将数据模型绑定到单元格。通常,数据模型是一个数组,数组中的每个元素对应...

    UITableViewCell在编辑状态下背景颜色的修改方法

    本篇将详细介绍如何在 `UITableViewCell` 的编辑状态下修改其背景颜色。 首先,我们要明白在默认情况下,`UITableViewCell` 在被选中或编辑时会有特定的背景颜色和样式。为了改变这些默认行为,我们需要进行一些...

    绘制UITableViewCell

    在iOS开发中,UITableView是展示数据的常用组件,它由一系列可重用的单元格(UITableViewCell)组成。当系统默认的样式无法满足需求时,我们可能会选择手工绘制自定义的单元格来提升用户体验和视觉效果。本文将深入...

    IOS应用源码——UITableViewCell 视图扩展.zip

    1. 自定义视图:开发者可能会创建自定义的UIView子类,用于替代或补充默认的视图元素,如自定义背景视图、分割线等。 2. 布局管理:使用AutoLayout或Size Classes进行视图的布局,确保在不同屏幕尺寸下都能正确显示...

    自定义UITableViewCell

    7. **优化性能**:为了提高性能,确保在`dequeueReusableCell(withIdentifier:for:)`返回的Cell中重置那些不需要改变的属性,如背景色、字体等,避免不必要的重绘。 8. **使用代码布局**:若不使用Storyboard,可以...

    UITableView背景透明

    通过自定义UITableViewCell并调整相关视图的背景设置,我们可以实现一个具有透明背景的UITableView,从而在iOS应用中创造出独特的视觉体验。在开发过程中,不断试验和优化,以找到最佳的平衡点,兼顾美观与性能。

    点击button获取所在UItableviewcell的所有属性

    接着,使用`tableView.cellForRowAtIndexPath:`方法获取到对应的cell实例,这样就可以访问所有cell的属性,如它的背景颜色、文本标签的内容等。 6. **进一步操作**:获取到cell后,可以根据需求进行其他操作,例如...

    滚动时背景模糊

    4. **自定义Cell**:在某些情况下,为了使背景模糊效果与Cell内容更好地结合,我们可能需要为UITableViewCell创建自定义子类,并在其中处理背景模糊。这可能涉及到在Cell的`layoutSubviews`方法中设置模糊效果,或者...

    在UITableView中自定义UITableViewcell实现ibooks图书列表样式

    5. **选中状态**:为给用户提供更好的交互体验,自定义选中状态的背景视图。在.xib文件中,选择Cell并设置Selected Background View,可以是纯色、渐变色或者自定义图片。 6. **重用标识符**:在代码中,为这个...

    UITableViewCell的绘画

    6. **避免过度绘制**:尽量减少不必要的背景颜色、边框等,因为这些会增加额外的绘制层次,影响性能。 7. **使用AutoLayout**:合理使用AutoLayout可以确保单元格在不同屏幕尺寸下正确显示,同时也能优化布局性能。...

    iOS-UITableview 的cell边线阴影

    - 在Xcode中,使用Interface Builder设计UI,添加需要的视图,如背景视图、边框视图等。 - 将自定义的`UITableViewCell`类与 nib 或 storyboard 中的单元格类型关联起来。 2. **添加边线** - 对于简单的直线边框...

    IOS应用源码之自定义UITableViewCell。实现各种样式的表格输入界面.zip

    1. 提升视觉效果:定制背景、文字颜色、字体、边框等,使界面更符合应用的品牌形象。 2. 增加交互性:添加按钮、滑块、开关等元素,提供更丰富的用户交互。 3. 实现复杂布局:对于复杂的数据结构,自定义单元格可以...

    iOS UITablecell画圆角

    在设计上,我们有时希望`UITableViewCell`的背景视图或内容视图具有圆角效果,以增加界面的美观度和用户体验。本文将深入探讨如何在iOS中实现`UITableViewCell`的圆角效果。 首先,我们需要理解`UITableViewCell`的...

    ios-UItableViewCell自定义多选的cell.zip

    为了优化用户体验,我们可能还需要添加一些视觉反馈,比如选中时单元格的背景色变化,或者高亮效果。这可以通过重写`prepareForReuse()`方法来清理单元格的状态,以及自定义` tableView(_:willDisplay:forRowAt:)`来...

    tableview上加背景图片

    在iOS开发中,为UITableView添加背景图片是一种常见的需求,可以增强界面的视觉效果。下面将详细解释如何在UITableView上添加背景图片以及通过代码创建UITableView的相关知识点。 首先,我们需要准备一张背景图片,...

    具有背景的列表视图控件

    3. **iOS的UITableView**:在iOS开发中,可以使用`UITableView`的`cellForRowAt`方法,为每个单元格(UITableViewCell)设置背景图片。通过调整`contentView`的背景属性,或者创建自定义的单元格模板,可以实现所需...

    iphone开发实例 TableView 02

    除了TableView的整体背景,还可以独立设置每个UITableViewCell的背景。在cellForRowAt方法中,可以修改cell的backgroundColor或者创建自定义背景视图: ```swift func tableView(_ tableView: UITableView, ...

Global site tag (gtag.js) - Google Analytics