iOS UITableViewAutomaticDimension RowHeight性能不佳/跳跃

Bri*_*tta 6 objective-c uitableview ios ios8

我正在iOS 8上构建一个基本的表格视图.我观看了WWDC '14关于自动调整单元格主题的视频,并试图重现这个概念,但是我遇到了一些问题.在viewDidLoad上:我打电话给:

//estimate for my cells though they may vary

self.tableView.estimatedRowHeight = 300.0;

self.tableView.rowHeight = UITableViewAutomaticDimension;
Run Code Online (Sandbox Code Playgroud)

当我的视图和表加载时,性能还可以.当我单击一个单元格时,程序会将我带到详细视图.当我点击该视图上的后退按钮并返回到表格视图时,那就是事情开始变得怪异的时候.然后,当我滚动时,细胞开始"跳跃".通过跳跃我的意思是他们不能平滑地滚动 - 他们倾向于从一个地方跳跃或跳跃到下一个地方.

我应该补充一点,内存不是问题,因为单元格正在被重用,而后台几乎没有数据.我的单元格(在storyboard文件中)的约束也是蓝色的,我在调试器中看不到自动布局约束异常.

有没有人用UITableViewAutomaticDimension看到这种行为?它只是一个苹果虫还是还有更多呢?谢谢.

Mar*_*ubé 5

我发现使用该线路有一些奇怪的问题 self.tableView.rowHeight = UITableViewAutomaticDimension;

但是,当我用委托方法替换它时,一切都变得更好了.在你的情况下将是:

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return UITableViewAutomaticDimension;
}

- (CGFloat) tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 300.0f;
}
Run Code Online (Sandbox Code Playgroud)


小智 0

向代码中添加一种委托方法

- (CGFloat)tableView:(UITableView *)tableViewestimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath{ return Approxheight;}

它会比当前时间更早加载uitableView。我希望这对你有用。