IOS详解TableView:性能优化及手工绘制UITableViewCell

提高表视图的性能

UITableView作为应用中最常用的视图,它的性能优化问题几乎是经常提及 。下面对在非网络访问情况下的表视图性能优化进行了主要的几点说明:

1.自定义类或XIB文件 时

在系统提供的样式不能满足我们的时候,我们经常会创建自定义类或者XIB文件来自定义单元 格样式。

在之前,我们通常通过loadNib的方式或者在代理方法中继续使用老的方法来设置重用 ,管理缓存池。在IOS6以后,我们可以通过注册的方式在注册单元格甚至表头视图,让系统来更高效的 进行管理。

2.InterfaceBuilder

据说有很多偏执的工程狮们坚持手打代码来完成工程,讨厌拖拖拽拽。 不过随着IB的不断强大,已经有越来越多的人喜欢上了使用IB来建立和管理界面。在新的Xcode5中,IB 又进步了不少。回到正题,尽管如此,在使用高性能的Cell时,还是推荐使用代码来创建单元格类。当 UITableViewCell拥有多个子视图时,IOS的渲染机制会拖慢速度。重写drawRect直接绘制内容的方式可 以提高性能,而不是在类初始化的时候初始化一些label或者imageview等。

3.图层颜色问题

透明图层对渲染性能会有一定的影响,系统必须将透明图层与下面的视图混合起来计算颜色,并 绘制出来。减少透明图层并使用不透明的图层来替代它们,可以极大地提高渲染速度。

4.渲染中 注意的问题

绘制时要尽可能的避免分配资源,比如UIFont,NSDateFormatter或者任何在绘制时 需要的对象,推荐使用类层级的初始化方法中执行分配,并将其存储为静态变量。

5.为代理方法 瘦身

我们经常能看到在项目中,

- (UITableViewCell *)tableView:(UITableView *) tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

这个方法中的代码多的吓人,我 们可以讲一些数据绑定到cell中,或者在有多个tableview的时候,将其绑定到其他的 tableviewcontroller中去。这样可以方便维护和管理,其实也对程序运行性能有很大的帮助。

手工绘制单元格

下面就绘制一个表视图单元格,并在表视图中显示。

时间: 2024-08-04 03:24:50

IOS详解TableView:性能优化及手工绘制UITableViewCell的相关文章

IOS详解TableView:QQ好友列表的实现

上篇博客写了关于性能优化以及手工绘制自定义单元格内容,这篇我们利用TableView的Section的 Header来实现类似QQ好友列表的效果. TableView有一个代理方法 这个方法返回一个UIView对象,我们可以将一个Button对象设为这个Section的Header,在点击它的 时候展开列表内容. 简单地看下假的好友列表数据 一个array中包含多个 dictionary,字典中又包括组别的名字以及好友列表,好友也用一个字典来表示,分别有名称,是否在 线以及头像图片名字. 加载数

详解Android性能优化之内存泄漏_Android

综述 内存泄漏(memory leak)是指由于疏忽或错误造成程序未能释放已经不再使用的内存.那么在Android中,当一个对象持有Activity的引用,如果该对象不能被系统回收,那么当这个Activity不再使用时,这个Activity也不会被系统回收,那这么以来便出现了内存泄漏的情况.在应用中内出现一次两次的内存泄漏获取不会出现什么影响,但是在应用长时间使用以后,若是存在大量的Activity无法被GC回收的话,最终会导致OOM的出现.那么我们在这就来分析一下导致内存泄漏的常见因素并且如何

详解MySQL性能优化(一)_Mysql

一.MySQL的主要适用场景1.Web网站系统 2.日志记录系统 3.数据仓库系统 4.嵌入式系统 二.MySQL架构图:   三.MySQL存储引擎概述 1)MyISAM存储引擎 MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件.首先肯定会有任何存储引擎都不可缺少的存放表结构定义信息的.frm文件,另外还有.MYD和.MYI文件,分别存放了表的数据(.MYD)和索引数据(.MYI).每个表都有且仅有这样三个文件做为MyISAM存储类型的表的存储,也就是说不管这个表

详解MySQL性能优化(二)_Mysql

接着上一篇学习:http://www.jb51.net/article/70528.htm 七.MySQL数据库Schema设计的性能优化高效的模型设计 适度冗余-让Query尽两减少Join 大字段垂直分拆-summary表优化 大表水平分拆-基于类型的分拆优化 统计表-准实时优化 合适的数据类型 时间存储格式总类并不是太多,我们常用的主要就是DATETIME,DATE和TIMESTAMP这三种了.从存储空间来看TIMESTAMP最少,四个字节,而其他两种数据类型都是八个字节,多了一倍.而TI

Android TraceView和Lint使用详解及性能优化

Android lint工具是Android studio中集成的一个代码提示工具,它主要负责对你的代码进行优化提示,包括xml和java文件,很强大.编写完代码及时进行lint测试,会让我们的代码变得非常规范而且避免代码冗余.让我们及时发现代码中隐藏的问题. lint的使用时非常简单的,我看可以用它实现代码布局的优化,Java代码的优化,不过我觉得根本解决问题还是得依赖于开发者的素质. 例子:我们需要删除掉一些无用的变量和布局文件等,这对代码的冗余有很大的帮助. 代码提示我们在6行需要为Ima

IOS详解TableView:内置刷新,EGO,以及搜索显示控制器

这几天因为住的地方的网出了一点问题,除了能上Q,上微博以外其他的网页全都无法登陆.博客也 就没有跟进. 今天恢复了,所以继续更新博客.也希望大家能继续评论或私自给我一些建议或者 交流:-) 今天找到了以前一个TableView的例子,主要关于上下拉刷新的,所以写了一个demo,然 后更新到博客上来. 内置刷新 内置刷新是苹果IOS6以后才推出的一个API,主要是针对 TableViewController增加了一个属性,refreshControl,所以如果想用这个内置下拉刷新的话,最好给 你的

IOS详解TableView:对话聊天布局的实现

上篇博客介绍了如何使用UITableView实现类似QQ的好友界面布局.这篇讲述如何利用自定义单元格 来实现聊天界面的布局. 借助单元格实现聊天布局难度不大,主要要解决的问题有两个: 1.自己和其他人说话头像和气泡图像在不同的位置. 找了些类似的例子,有根据不同情 况设置不同的自定义类的.这里使用根据说话人的属性来设置不同的位置,在一个单一的单元格类中. 2.像微博等根据说话的内容长短对说话图片进行拉伸,以及单元格自适应高度. 实现步 骤: 搭建界面 数据属性字典

IOS详解TableView:实现九宫格效果

根据需求九宫格的效果可以有很多种.九宫格效果应用比较广泛,实现也多种多样,比如选项抽屉效 果. 这里写了一个在UITableView上显示九宫格效果的Demo. 思路:在Cell上初始化自定 义按钮,根据预设的每行按钮个数来决定他们在Cell上的位置.然后响应点击事件即可.整体实现不是 很难,细节上注意一下即可. 搭建界面 数据,图片来自于天猫客户端的一些资源图片,然后还是以属性字典的方式读取提前设定的数据.

IOS详解TableView:静态表格使用以及控制器间通讯

一个Demo 通过使用静态表格来完成个人资料增加编辑以及搜索.不过通常我们会使用更灵活的Group 风格表视图来完成. 上篇文章简单的介绍了一下搜索框的使用.这里给其加入数据来说明. 先看下效果