Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/99.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 在滚动时有效调整UITableViewCell的大小_Iphone_Ios_Uitableview_Real Time - Fatal编程技术网

Iphone 在滚动时有效调整UITableViewCell的大小

Iphone 在滚动时有效调整UITableViewCell的大小,iphone,ios,uitableview,real-time,Iphone,Ios,Uitableview,Real Time,总体思路 我希望在用户滚动列表时动态调整UITableViewCells的大小,也就是说,当项目到达列表底部时,它们的大小会增加 注意事项 这是一个进程,在调用时需要每秒刷新多次: -(void)scrollViewDidScroll:(UIScrollView *)scrollView - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 因此,采用UI

总体思路

我希望在用户滚动列表时动态调整UITableViewCells的大小,也就是说,当项目到达列表底部时,它们的大小会增加

注意事项

这是一个进程,在调用时需要每秒刷新多次:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
因此,采用
UITableView::ReloadData
方法调用以下对象是不切实际的:

-(void)scrollViewDidScroll:(UIScrollView *)scrollView
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
因为这将需要重新加载一堆额外的数据,并大大降低系统的速度

需要

  • 我将有大约10个项目在屏幕上
  • 在极端情况下,整个列表最多可能有100个项目
  • 系统需要平滑滚动
  • 当列表滚动时,项目需要实时平滑地扩展和收缩
常识

  • 与带有静态项的列表相比,这肯定会对性能产生一些影响

  • 有数百个线程处理“将cel调整为文本长度”的简单情况,这不是我所需要的,因为与此相比,这是一个一次性的事情,每秒有大量的周期

可能的方法

  • 子类
    UITableView
  • UIScrollView
    中嵌套静态
    UITableView
  • 从头开始创建项目列表系统,不要使用
    UIScrollView
丢弃的方法

  • 调用
    UITableView::每个周期重新加载数据,以便调用
    heightforrowatinexpath
到目前为止

我已经编写了一个模块来计算物品大小的数学

结论

我正在寻找解决此问题的最快方法,但如果需要,作为最后手段,我将重新编写自己的
UITableView


谢谢您的时间。

也许可以查看uitableview委托数据表中的tableView:willDisplayCell:forRowAtIndexPath

我遇到了一个类似的问题,我需要先加载表格单元格,然后在加载或重新加载表格后对每个单元格执行不同的操作,这可能就是您要查找的


干杯

您不需要调用-[UITableView reloadData]来更新单元格的几何图形。通过调用以下命令,可以使UITableView重新计算单元格的几何图形:

// force geometry update
[tableView beginUpdates];
[tableView endUpdates];

在使用
UITableView进行大量测试后,

中提到了这一点,我还没有找到有效的方法。似乎,
UITableView
可能以不允许动态调整单元格大小的方式进行优化。因此,定制上市系统似乎是唯一的选择。我已经开始在
UIScrollView
上构建这样的项目


大部分的基本功能已经完成,但该项目目前处于搁置状态,因为到目前为止,我还有一个更重要的系统要开发。如果你有兴趣参加这个项目,请告诉我。

@jacky boy,谢谢你的编辑和观察。我删除了一些从未得到回答的问题,并输入了一些我找到的解决方案。我的大多数问题现在都得到了回答,除了我想弄清楚的两个问题。不,问题是您需要调用UITableView::ReloadData来更改单元格大小。因为我正在实时调整所有单元格的大小,因为didScroll被称为大量每秒对UITableView::ReloadData的调用将对性能产生巨大影响。哦,我明白了,是的,那不是最好的解决方案。祝你好运!虽然这确实有效,但根据我的测试,如果您调用它,它仍然运行得非常慢:
-(void)scrollViewDidScroll
,以便在用户滚动时实时调整Dynamicly的大小。你有没有设法做到这一点,而没有一个大的性能击中@brian?