我在我的uitableview中使用了自定义单元格类,并在cellForRowAtIndexPath方法中使用。
在该方法中,已经定义了cellIdentifier,甚至将cell属性用作dequeueReusable。
但是每次创建自定义单元格对象并调用其方法时,都会滚动我的tableview。因为在设备上,滚动会产生不稳定的效果。
我还检查了if(cell == nil)和里面我为该自定义单元格分配了我的图像和标签属性。但是每一次,这个条件都成立,程序指针进入那个条件。
请指导我。
如果可能,请提供一些示例代码。
提前致谢
Mrunal。
答案 0 :(得分:14)
我有相当复杂的UITableViewCell
。对我来说,诀窍是将单元格层的shouldRasterize
设置为YES
。但它引入了模糊的文字。为避免这种情况,我设置了比例 - [self.layer setRasterizationScale:[[UIScreen mainScreen] scale]]
。
答案 1 :(得分:13)
正如许多其他人所指出的那样,除非你发布你的代码(你的CellForRowAtIndexPath就足够了),否则我们无法真正帮助你。
一般来说,有很多方法可以提高UITableViews上的滚动性能,以及我使用的顶级滚动性能(并在其他Stack Overflow答案中使用):
始终重复使用细胞,使用dequeuereusablecellwithidentifier时 创造新的细胞。这可以防止OS创建的开销 在快速滚动时会破坏大量物体。
折叠单元格的视图层次结构。而不是有很多 视图和子视图,创建自定义视图并完成所有单元格 在drawRect中绘图。像Twitter这样的应用程序使用这种方法 超快速细胞绘图。
确保您的图片不透明。您可以通过确保所有图像来完成此操作 资产没有烘焙到它们的alpha通道,并通过设置 图层的不透明属性为YES。
如果要设置单元格图像的图层属性的任何属性(如阴影或圆角矩形),则会影响滚动性能。将图层的shouldRasterize设置为YES会有所帮助,但您应该认真考虑在单元格内进行任何密集的绘图操作。
答案 2 :(得分:1)
由于ImageView,这种情况正在发生。在UITableView的if(cell == nil)
中的CellAtIndexPathMehtod
内创建标签和imageViews,并将其值分配给此值。
如果您的图片是从服务器加载的,请使用Asynchrnous image loading