由于自定义单元格创建,UITableview在滚动时变得不稳定?

时间:2011-08-27 07:41:15

标签: iphone ios uitableview scroll custom-cell

我在我的uitableview中使用了自定义单元格类,并在cellForRowAtIndexPath方法中使用。

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

但是每次创建自定义单元格对象并调用其方法时,都会滚动我的tableview。因为在设备上,滚动会产生不稳定的效果。

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

请指导我。

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

提前致谢

Mrunal。

3 个答案:

答案 0 :(得分:14)

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

答案 1 :(得分:13)

正如许多其他人所指出的那样,除非你发布你的代码(你的CellForRowAtIndexPath就足够了),否则我们无法真正帮助你。

一般来说,有很多方法可以提高UITableViews上的滚动性能,以及我使用的顶级滚动性能(并在其他Stack Overflow答案中使用):

  1. 始终重复使用细胞,使用dequeuereusablecellwithidentifier时 创造新的细胞。这可以防止OS创建的开销 在快速滚动时会破坏大量物体。

  2. 折叠单元格的视图层次结构。而不是有很多 视图和子视图,创建自定义视图并完成所有单元格 在drawRect中绘图。像Twitter这样的应用程序使用这种方法 超快速细胞绘图。

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

  4. 如果要设置单元格图像的图层属性的任何属性(如阴影或圆角矩形),则会影响滚动性能。将图层的shouldRasterize设置为YES会有所帮助,但您应该认真考虑在单元格内进行任何密集的绘图操作。

  5. 有关详细信息,请参阅http://developer.apple.com/library/ios/#samplecode/TableViewSuite/Introduction/Intro.html%23//apple_ref/doc/uid/DTS40007318-Intro-DontLinkElementID_2

答案 2 :(得分:1)

由于ImageView,这种情况正在发生。在UITableView的if(cell == nil)中的CellAtIndexPathMehtod内创建标签和imageViews,并将其值分配给此值。

如果您的图片是从服务器加载的,请使用Asynchrnous image loading