UITableView 拉动卡原因

原创 2012年03月22日 11:18:11

(1)

经测试:对性能影响很大

self.imageView.clipsToBounds = YES;

测试方法:

直接修改UITableViewCell的imageView, 修改前后,界面差别很大



(2) 直接绘制cell 导致问题


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

{

    [selfconfigCell:(detailListViewTabelCell *)cellIndexPath:indexPath ];

    [cellsetNeedsDisplay]; //如果直接绘制, 就需要在每个CELL显示时刷新,这是导致了界面慢的原因

}



tableView 的性能优化:

(1)使用不透明视图。
不透明的视图可以极大地提高渲染的速度。因此如非必要,可以将table cell及其子视图的opaque属性设为YES(默认值)。
其中的特例包括背景色,它的alpha值应该为1(例如不要使用clearColor);图像的alpha值也应该为1,或者在画图时设为不透明。


(2)减少视图的数目

UITableViewCell包含了textLabel、detailTextLabel和imageView等view,而你还可以自定义一些视图放在它的contentView里。然而view是很大的对象,创建它会消耗较多资源,并且也影响渲染的性能。
如果你的table cell包含图片,且数目较多,使用默认的UITableViewCell会非常影响性能。奇怪的是,使用自定义的view,而非预定义的view,明显会快些

。当然,最佳的解决办法还是继承UITableViewCell,并在其drawRect:中自行绘制:
不过这样一来,你会发现选中一行后,这个cell就变蓝了,其中的内容就被挡住了。

最简单的方法就是cell.selectionStyle = UITableViewCellSelectionStyleNone;, 这样就不会被高亮了。
此外还可以创建CALayer,将内容绘制到layer上,然后对cell的contentView.layer调用addSublayer:方法。layer并不会显著影响性能,但如果layer透明,或者有圆角、变形等效果,就会影响到绘制速度了。


(3)不要做多余的绘制工作。
在实现drawRect:的时候,它的rect参数就是需要绘制的区域,这个区域之外的不需要进行绘制。
例如上例中,就可以用CGRectIntersectsRect、CGRectIntersection或CGRectContainsRect判断是否需要绘制image和text,然后再调用绘制方法


(4)预渲染图像

在bitmap context里先将其画一遍,导出成UIImage对象,然后再绘制到屏幕。此步很重要! 参考<利用预渲染加速iOS设备的图像显示>


(5)不要阻塞主线程

   创建新线程去下载资源



老生常谈之UITableView的性能优化

新的一年开始了,新的工作也开始了,刚过完年回来,感觉节后综合征还是很严重的~今早差点迟到。。。废话不多说,今天就来说说iOS最常用的控件-UITableView,基本用法就不多说了,大家应该都知道,当...
  • hmh007
  • hmh007
  • 2017年02月07日 11:11
  • 4307

[个性化你的App]iOS:实现类似于google+的tableviewcell卡片式插入效果

经常可以看到一些主流的应用都使用了很漂亮的动画效果,这必然可以给用户更好的体验.如果我们的应用只使用cocoa框架自带的那些效果, 如何能在appstore众多的应用里脱颖而出呢? 上一次我写了如何实...
  • u010761652
  • u010761652
  • 2014年03月07日 15:17
  • 2968

iOS开发中UITableView和UITableViewCell的几种样式

说了很久要写自己的技术博客,由于执行力差,一直拖到现在才开始写文章。我是一个刚进入软件行业还不到一年的小菜鸟,没有什么技术可言,然后就在这里斗胆妄自尊大的在博客园上写些东西,还希望技术大牛们不要嘲笑。...
  • CrazyZhang1990
  • CrazyZhang1990
  • 2013年10月09日 13:44
  • 96879

UITableView出现卡顿如何处理

http://iiiyu.com/2013/04/15/learning-ios-notes-twenty/ tableView的beginUpdate和endUpdate要比reloadDat...
  • u010618987
  • u010618987
  • 2014年12月04日 21:21
  • 992

UITableView滑动卡顿解决方案

UITabelView是一个非常常用的基本视图,
  • ahut_qyb_6737
  • ahut_qyb_6737
  • 2014年11月07日 15:14
  • 3790

iOS开发——项目实战总结&UITableView性能优化与卡顿问题

标签: UITableView性能优化与卡顿问题 本文转载出处:http://www.mamicode.com/info-detail-1125512.html 1.最常用的就是cell...
  • qq_23616601
  • qq_23616601
  • 2016年04月01日 17:06
  • 762

iOS 如何解决UITableView刷新卡顿现象

虽然说SDWebImage提供了一个方法,异步加载图片到UIImageView上 但是,有些时候。需要的图片并不是需要铺满UIImageView 于是就抛弃了,后来想想还是挺二逼的。我可以...
  • mulingyingzi
  • mulingyingzi
  • 2015年10月29日 15:14
  • 430

TableView的性能优化-主要针对滑动时候出现的卡顿现象

TableView的性能优化-主要针对滑动时候出现的卡顿现象
  • ITclody
  • ITclody
  • 2016年02月26日 20:29
  • 11108

UITableView滑动卡顿优化

废话实际上,目前市面上iPhone设备(iPhone5s以上)都很少出现卡顿现象了,但是一些老设备的用户,特别还有一小部分iPhone4用户(iPhone4无法升级iOS8),给适配增加了难度。作为对...
  • zhuxincheng_1218
  • zhuxincheng_1218
  • 2016年05月25日 17:15
  • 2490

ios 11以上系统,tableview上啦刷新,indexPath.row,自动加5,引起数组越界的问题导致崩溃

ios11以上系统,再tableview上啦刷新时 indexpath.row不知道什么原因自动加5(如果有大神知道原因,请指点一下,谢谢),为了防止数组越界崩溃, 我的解决办法是给实现tablev...
  • wty947825770
  • wty947825770
  • 2017年11月15日 11:30
  • 101
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UITableView 拉动卡原因
举报原因:
原因补充:

(最多只允许输入30个字)