objective c UITableView无法使用自定义单元格和视图滚动平滑

Meg*_*ega 2 iphone objective-c ios ios5 ios7

我希望tableview在每个可滚动的行中显示多个图像.为此我正在使用,UITableView并且Custom UITableViewCell,在自定义tableView单元格中,我正在生成具有多个视图和图像的滚动视图,因此当我滚动表格时,它不能平滑地滚动它的闪烁.谁能建议我以更好的方式做到这一点?

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
   // Products table view. 
   ProductCustomCell *cell = (ProductCustomCell *)[tableView dequeueReusableCellWithIdentifier:@"CatelogCell"] ;//] forIndexPath:indexPath]; 
   if (cell == nil) { 
      cell = [[ProductCustomCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"CatelogCell"]; 
   } 
   cell.productCellDelegate = self; 
   [cell initProperties]; 
   [cell showProductsInScroll:catelogBundle];
}
Run Code Online (Sandbox Code Playgroud)

Tin*_*onk 5

如果你想平滑滚动tableview,你应该注意几个提示.

  1. 缓存行的高度(表视图可以经常请求), - 实际上这一点不是阻止tableview滚动的关键点.

  2. 为表中使用的映像创建最近最少使用的缓存(并在收到内存警告时使所有非活动条目无效) - 您可以使用SDWebImage下载映像并缓存它们.有时,您可能想要缓存一些您的tableview经常使用的图像,如果您当前的视图是顶视图,即使您收到内存警告,这些图像也可能无法释放.

  3. 在绘制一切UITableViewCelldrawRect:,如果不惜一切代价尽量避免子视图(或者,如果你需要的标准的辅助功能,内容画面的drawRect:) -它可以节省一些成本,但它也可能会花费你更多的时间来编写,也许难以维持码.但是在uitableviewcell上使用较少的视图真的很好,这将提高你的表现.

  4. 使你UITableViewCell的图层不透明(如果有的话,内容视图也一样) - 请尽可能少地使用图层不透明.

  5. 使用UITableView示例/文档中建议的reusableCellIdentifier功能- 您必须遵循此提示.

  6. 避免渐变/复杂的图形效果,这些效果不是预先烘焙成UIImages - 如第4点.

当然,大部分时间,如果你的tableview滚动不顺畅,主要问题是你在同步中加载图像.

使用仪器测试性能真的很棒.