我有一个UITableView使用自定义表格单元格,每个单元格都有一个UIWebView.
因为UIWebView需要花时间加载,所以我想避免不惜一切代价重新加载它们.在某些情况下,我已经加载了所有单元格,但它们的高度混乱了.因此,我需要"重新布局"表而不触发"cellForRow"功能.
我怎样才能解决我的问题?
我正在使用iOS 8自我调整单元(tableView.rowHeight = UITableViewAutomaticDimension
和tableView:estimatedHeightForRowAtIndexPath:
)组合.它很有效,直到我开始在单元格内输入内容.当我正在键入时,我正在调用beginUpdates
/ endUpdates
pair来调整我的单元格大小(文本视图随着我的输入而增长,并且在我删除时缩小)但是每次调用都会导致跳转到表格视图的顶部.如果我删除beginUpdates
/ endUpdates
pair然后它不会跳转但我的单元格不会在我键入时调整大小.
以下是该问题的演示:
如何在键入而不跳到表格视图的顶部时,如何让我的单元格正确调整大小?我只针对iOS> = 8,所以我不需要任何iOS 7兼容性.
我知道如何使用此处所示的方法为UITableViewCell 的高度变化设置动画:在选择时,您可以在UITableViewCell上设置高度变化动画吗?
但是,使用该方法,UITableView将同时滚动,我不希望它这样做.
我有一个UITableView,只有很少的细胞; 它占用的屏幕高度低于屏幕高度.底部单元格有一个UITextField,当它开始编辑时,我手动设置UITableView的内容偏移量,以便具有UITextField的单元格滚动到顶部.然后,根据UITextField中的输入,我可能想要增加UITableViewCell的大小以显示额外的选项,或多或少.
问题是,在动画这个更改时,它将重新定位UITableView,以便我的UITextField不再位于顶部.
这就是我正在做的,或多或少:
self.customAmountCellSize = height;
[self.tableView beginUpdates];
[self.tableView endUpdates];
Run Code Online (Sandbox Code Playgroud)
我也试过了
self.customAmountCellSize = height;
CGPoint originalOffset = self.tableView.contentOffset;
[self.tableView beginUpdates];
[self.tableView endUpdates];
[self.tableView setContentOffset:originalOffset animated:NO];
Run Code Online (Sandbox Code Playgroud)
我想要行高动画,我不希望UITableView作为结果滚动.
有任何想法吗?