介绍TableView非常不错的一篇文章

原文:http://blog.csdn.net/fanxiaochuan/article/details/11332775

介绍TableView非常不错的一篇文章:

http://www.cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html

官方给出的cell的讲解:

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/TableView_iPhone/TableViewCells/TableViewCells.html

误区:

if(cell ==nil)

{

cell = [[[UITableViewCellalloc]
initWithStyle:UITableViewCellStyleDefaultreuseIdentifier:cellId]
autorelease];

cell.backgroundColor = [UIColorgreenColor];

}

return cell;

这样设置cell的背景通常是不起作用的,纳尼?!淡定,需要了解一下cell的组成。

  1. backgroundView — the entire background of the row (including what looks like theUITableView‘s background in UITableViewStyleGrouped style
    tables   整个的行的背景视图
  2. selectedBackgroundView — replaces the backgroundView when the row is selected.     
      选中cell后的背景视图,替换原有的背景视图
  3. image — a customizable image (not actually a subview) at the left of the cell.一个定制的image位于cell的左侧
  4. accessoryView — a customizable view at the right of the cell.             一个定制的view位于cell的右侧
  5. contentView — a customizable view between the image and the accessoryView(technically,
    it extends behind the image).

一部分自定义的区域位于contentView(位于image和accessoryView中间),如果没有accessoryView那么contentView则会霸占accessoryView的位置.

contentView是cell的一个子View,要明确这一点!!

(PS:值得注意的是tableView除了可以自定义背景颜色之外,不可以自定义北京,像自定义背景必须把tableView的背景色置为clear,然后定义tableView上一层的view的背景)

A cell object has various parts, which can change depending on the mode of the table view.

官方给的解释说:cell对象有多重组成部分,可以根据tableView的模式而变化.

只有cell位于UITableViewCellStyleSubtitle模式下。下面的detailTextLabel才会起作用.

而且没有imageView的时候,textLabel和detailTextLabel的未知是不一样的。

cell = [[[UITableViewCellalloc]
initWithStyle:UITableViewCellStyleSubtitlereuseIdentifier:cellId]
autorelease];

cell.accessoryType =UITableViewCellAccessoryDetailDisclosureButton;

cell.textLabel.text  =@"1";

cell.detailTextLabel.text =@"2";

cell.imageView.image = [UIImageimageNamed:@"1"];

cell = [[[UITableViewCellalloc]
initWithStyle:UITableViewCellStyleSubtitlereuseIdentifier:cellId]
autorelease];

cell.accessoryType =UITableViewCellAccessoryDetailDisclosureButton;

cell.textLabel.text  =@"1";

cell.detailTextLabel.text =@"2";

//        cell.imageView.image = [UIImage imageNamed:@"1"];

文字是顶边的。

不过可以改变indentationLevel去使得文字不再顶边

cell.accessoryType =UITableViewCellAccessoryDisclosureIndicator;

cell.accessoryType =UITableViewCellAccessoryDetailDisclosureButton;

cell.textLabel.text  =@"1safdasfasfsafas";

cell.detailTextLabel.text =@"2";

cell.indentationLevel =2;

cell.indentationWidth =5;
//缩进距离为2*5=10 默认的宽度为10...

cell.imageView.image = [UIImageimageNamed:@"1"];

自定义cell的两种方式:(具体的定制方式,官方都有给出,很详细还有具体代码可以看)

  • Add subviews to a cell’s content view.注意是加view时加到了contentView上面.
  • 1、可以使用tag的方式,放到xib里面加
  • 2、也可以直接采用程序实现,用tag获取到cell里的东西
  • Create a custom subclass of UITableViewCell.

注意:使用xib自定义的时候要 Enter a reuse identifier in the Identifier text field!!!

关于tableView的性能问题(官方给出三点建议):

  • Reuse cells.
    Object allocation has a performance cost, especially if the allocation
    has to happen repeatedly over a short period—say, when the user scrolls
    a table view. If you reuse cells instead of allocating new ones, you
    greatly enhance table view performance.
  • Avoid relayout of content. When reusing cells with custom subviews, refrain from laying out those subviews each time the table view requests a cell. Lay
    out the subviews once, when the cell is created.
  • Use opaque subviews. When customizing table view cells, make the subviews of the cell opaque, not transparent.

要重用cell,要避免重复layOut内容,使用不透明的子view

时间: 2024-10-10 22:13:58

介绍TableView非常不错的一篇文章的相关文章

DSL 或者说是抽象 或者说是沉淀 ,我看到的不错的一篇文章

作者:张浩斌 链接:https://www.zhihu.com/question/45552115/answer/99388265 来源:知乎 著作权归作者张浩斌和知乎所有. -------------------------------------------- 这个问题其实是只可意会不可言传,然而从看到这个邀请,就有跟知友卖弄的冲动. 首先,我是从qbasic开始编程,经历了qb到vb,vb到asp(不带.net),asp到jsp,jsp到php,再回头学习j2ee.这个过程可能导致我的观点

Visual Studio 实用扩展推荐   Visual Studio 拥有非常不错的可扩展性,在之前的文章中,我也给大家示范了如何进行编辑器的扩展(详见文末参考资源)。在本篇文章中,我将介绍几款非常实用的扩展,从而帮助我们提高开发效率。 C# outline   Visual Studio 默认的大纲方案只允许在方法级别及以上进行代码的折叠,无法对一个if、while的区块进行折叠

Visual Studio 实用扩展推荐 Visual Studio 拥有非常不错的可扩展性,在之前的文章中,我也给大家示范了如何进行编辑器的扩展(详见文末参考资源).在本篇文章中,我将介绍几款非常实用的扩展,从而帮助我们提高开发效率. C# outline Visual Studio 默认的大纲方案只允许在方法级别及以上进行代码的折叠,无法对一个if.while的区块进行折叠,而这款工具则正好弥补了这个问题. highlight all occurrences of selected word

不错的一篇关于强迫症的文章

不管强迫症如何千变万化,顺其自然把心放平是治疗强迫症的核心与关键. 心病还须心药医,用药物治疗强迫症治标不治本. 在强迫症中,一切的心理反抗,或者是转移注意力,都是没有效果的 你最应该做的是把心放平顺其自然,这一点至为重要. 强迫症就像在冰面上骑自行车,你越用力摔得越狠.又像一个弹簧,你越是摁它,它就越弹的高,你不动它,它倒自己静止不动了,你的强迫症和这个弹簧原理差不多.以后什么都不要刻意去控制它抑制它,顺其自然就好. 再有一点,得强迫症的人,往往把什么都幻想得完美,这是错误的.比如,心理强迫症

这篇文章不错——代码规范

该文章来自于阿里巴巴技术协会(ATA)精选文章. 个人经历 对我代码质量影响最大的是在一家外资企业,在这家公司我觉得有以下几个方面做的很不错. 团队编码风格统一 统一到什么程度? 不看代码作者,你很难区分代码是谁写的(在目前公司一些团队也能达到这个标准). 个人观点: 这样做有什么好处?团队中每个人阅读代码都很容易,减少很多沟通,维护成本( 代码阅读的次数远远大于变更的次数),并且心情非常愉悦.有人肯定觉得愉悦有点夸张,举个栗子: 有一些代码,如果不是由于与工作内容有关联,你是否有种这辈子都不情

一篇介绍JSP标签库很详细的文章

2008年12月17日 星期三 上午 10:52 标准的JSP 标记可以调用JavaBeans组件或者执行客户的请求,这大大降低了JSP开发的复杂度和维护量. JSP技术也允许你自定义taglib,其实换句话说,taglib可以看成是对JSP标记的一种扩展,正如xml是对 html的一种扩展一样.taglib通常定义在tag标签库中,这种标签库存放着你自己定义的tag标签.简而言 之,如果使用taglib,那么你可以设计自己的JSP标记!一般来说,自定义tag标签主要用于操作隐藏对象.处理htm

在知乎上看到 Web Socket这篇文章讲得确实挺好,从头看到尾都非常形象生动,一口气看完,没有半点模糊,非常不错

https://www.zhihu.com/question/20215561/answer/40316953 在知乎上看到这篇文章讲得确实挺好,从头看到尾都非常形象生动,一口气看完,没有半点模糊,非常不错,所以推荐给大家,非常值得一读. 作者:Ovear链接:https://www.zhihu.com/question/20215561/answer/40316953来源:知乎著作权归作者所有,转载请联系作者获得授权. 一.WebSocket是HTML5出的东西(协议),也就是说HTTP协议没

一边介绍mapreduce原理不错的文章

Map Reduce – the Free Lunch is not over? 一边介绍mapreduce原理不错的文章

【转载】如果有人问你数据库的原理,叫他看这篇文章

原文:如果有人问你数据库的原理,叫他看这篇文章 本文由 伯乐在线 - Panblack 翻译,黄利民 校稿.未经许可,禁止转载!英文出处:Christophe Kalenzaga.欢迎加入翻译组. 一提到关系型数据库,我禁不住想:有些东西被忽视了.关系型数据库无处不在,而且种类繁多,从小巧实用的 SQLite 到强大的 Teradata .但很少有文章讲解数据库是如何工作的.你可以自己谷歌/百度一下『关系型数据库原理』,看看结果多么的稀少[译者注:百度为您找到相关结果约1,850,000个…] 

十年后2023年再读这篇文章,看看我将会怎么样?

http://blog.csdn.net/wojiushiwo987/article/details/8453881看到一篇文章不错[清华差生10年奋斗经历] ,写给将要工作的自己,十年后2023年再读这篇文章,看看我将会怎么样? 在2012年收关时刻,看到如此激励的文章,实在是我的幸运.文章讲述了所谓清华差生的奋斗史,从毕业.各种工作经历.与同事.领导关系细致入微的剖析了实战的职场及人和人差距拉开的原因等.正如文中作者指出的那样,这也是我的心灵导师俞敏洪一直教导的,”人生是跑马拉松的过程,不在