2011-08-27 90 views
3

我已经使用自定义单元类为我的uitableview和cellForRowAtIndexPath方法中使用。由于自定义单元格的创建,UITableview在滚动时会变干?

在该方法中,cellIdentifier已被定义,甚至cell属性被用作dequeueReusable。

但每当我的自定义单元格对象被创建并调用它的方法时,滚动我的tableview。由于在设备上,滚动得到生涩的效果。

我也检查是否(cell == nil)和里面,我分配我的图像和标签属性为自定义单元格。但是每一次,这个条件都是成立的,并且程序指针进入该条件。

请指导我。

如果可能的话,请提供一些示例代码。

在此先感谢

Mrunal。

+1

您需要发布您的cellForRowAtIndexPath方法,以便任何人为您提供帮助。 – jrturton

+1

不,不,不,不,不,不,不,不,不,不,不, – BoltClock

回答

11

正如许多人所指出的,我们不能真正帮助你,除非你发布你的代码(你的cellForRowAtIndexPath应该是足够了)。

一般来说有改善上UITableViews和顶部的人我用的是(和其他堆栈溢出的答案已经使用)的滚动性能的方法很多:

  1. 始终重用的小区,当 使用dequeuereusablecellwithidentifier创造新的细胞。这可以防止操作系统的开销创建 并在快速滚动时销毁大量对象。

  2. 折叠单元格的视图层次结构。而不是有很多 视图和子视图,请创建一个自定义视图,并在drawRect中执行所有绘制的单元格 。像Twitter这样的应用程序使用此方法进行超快速单元绘制。

  3. 确保您的图像不透明。您可以通过确保所有图片 资产没有烘焙Alpha通道并将 图层的不透明属性设置为YES来完成此操作。

  4. 如果要设置单元图像的图层属性的任何属性(如阴影或圆角矩形),这可能会影响滚动性能。将layer的shouldRasterize设置为YES会有所帮助,但是您应该认真思考如何在单元格中执行任何强化绘图操作。

欲了解更多详情,请参阅http://developer.apple.com/library/ios/#samplecode/TableViewSuite/Introduction/Intro.html%23//apple_ref/doc/uid/DTS40007318-Intro-DontLinkElementID_2

+0

很好的解释,谢谢... – Mrunal

+0

对我来说,将单元格图层的不透明属性设置为YES,并且应该将Rasterize设置为YES,以消除我得到的所有抖动。顺便说一句,我的细胞很复杂。 –

+1

你的第四点就像火箭一样工作! Awsm。 。 。 (y) 但需要添加 - [self.layer setRasterizationScale:[[UIScreen mainScreen] scale]]。之后。 –

1

这是因为ImageView发生的。在UITableView的里面创建你的标签和imageViews,并在这个if之外赋值。

,如果你的图片是从服务器加载然后使用Asynchrnous image loading

10

我有非常复杂的UITableViewCell。对我来说,诀窍是将细胞层的shouldRasterize设置为YES。但它引入了模糊的文字。为了避免这种情况,我设置了比例 - [self.layer setRasterizationScale:[[UIScreen mainScreen] scale]]

+0

老兄你摇滚! – amar

+0

感谢您的第二点! –

相关问题