2

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

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

但是,在每次创建自定义单元格对象并调用其方法时滚动我的表格视图。由于设备上的这一点,滚动会产生生涩的效果。

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

请指导我。

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

提前致谢

穆纳尔。

4

3 回答 3

15

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

于 2013-09-06T15:32:01.343 回答
13

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

一般来说,有很多方法可以提高 UITableViews 的滚动性能,我使用的最常用的是(并且在其他 Stack Overflow 答案中使用过):

  1. 始终重复使用单元格,在创建新单元格时使用 dequeuereusablecellwithidentifier。这可以防止操作系统在快速滚动时创建和销毁大量对象的开销。

  2. 折叠单元格的视图层次结构。与其拥有大量视图和子视图,不如创建一个自定义视图并在 drawRect 中绘制所有单元格。Twitter 等应用程序使用这种方法进行超快速的单元格绘制。

  3. 确保您的图像不透明。您可以通过确保所有图像资源没有烘焙到其中的 Alpha 通道并将图层的 opaque 属性设置为 YES 来做到这一点。

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

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

于 2011-08-27T09:17:50.440 回答
1

This is happening because of ImageView. Create your labels and imageViews inside if(cell == nil) in CellAtIndexPathMehtod of UITableView and assign its value outside this if.

And If your images are loading from server then use Asynchrnous image loading

于 2011-08-27T07:57:52.843 回答