我使用UITableView和静态单元格.如果我使用reloadData,比一切都好.
如果我尝试reloadRowsAtIndexPaths它隐藏行.如果我向上拖动tableView(当单元格更新时),则会出现行.
我一直在做很多谷歌搜索,试图弄清楚这样做的正确方法,到目前为止,我不知所措.
我已经使用我自己的视图对UITableViewCell进行了子类化,并且我试图设置UITableViewCell的高度,以便在选中时进行扩展,并在再次选择时进行收缩.这个表有可能包含数千行,所以我不想覆盖tableView的heightForRowAtIndexPath.理想情况下,我希望能够一次扩展多个单元格,但这并不是那么重要.做这个的最好方式是什么?
谢谢你,贾斯汀
我知道如何使用此处所示的方法为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作为结果滚动.
有任何想法吗?
我想在显示 detailViewController 之前为UITableViewCell下图中的类似动画(单元格变得更小)。我从过去两天开始尝试过,并尝试了我为类似问题找到的所有其他答案。
我希望单元在用户将手指放在 UITableViewCell 上时立即动画/调整大小。

UITableViewCell 是一个自定义单元格。我尝试在 UITableViewCell 子类的setSelected:(BOOL)selected animated:(BOOL)animated方法中为 cell.contentView 设置一个新框架。UITableViewCell 没有像我预期的那样调整大小。
我还观察到,当用户从 UITableViewCell 抬起手指时会调用此方法。实际上我希望它在用户点击单元格时立即发生。如果未选择单元格并且用户移动到其他某个单元格,则单元格应调整回正常大小。
然后我做了一些关于从 UITableViewCell 接收触摸事件的搜索。我尝试添加一个UILongPressGestureRecognizer and UITapGestureRecognizer并在选择器中我尝试像这样更改 cell.contentView 框架
cell.contentView.frame = CGRectMake(cell.frame.origin.x +20, cell.frame.origin.y, cell.frame.size.width-20, cell.frame.size.height);
[cell setNeedsDisplay];
Run Code Online (Sandbox Code Playgroud)
但是选定的单元格只是闪烁(单元格背景)它没有像我预期的那样调整大小。
任何建议都会非常有帮助。提前致谢
我有一个UITableViewCell扩展并在点击时添加标签.
逻辑:
我
cellForRowAtIndexPath在所选单元格中添加了一个标签,然后didSelectRow...重新加载了tableView.在heightForRow...选定的单元格中展开.希望你能得到这张照片.
在didSelectRow...我必须reloadData,而不是开始/结束更新.我想要做的是reloadData并让它动画.我可以这样做:
[UIView transitionWithView: tableView
duration: 0.40f
options: UIViewAnimationOptionTransitionCrossDissolve
animations: ^(void)
{
[self.tableView reloadData];
}
completion: nil
}];
Run Code Online (Sandbox Code Playgroud)
这就是正在改变的细胞的交叉溶解.我想要的是UITableViewRowAnimationTop,但显然在转换选项中是不可能的.有没有办法reloadData和使用UITableViewRowAnimationTop?
我正在创建行高100的tableview,每行之间我想要一个5像素的间隙.对于每一行,我在行的第95个'y'位置添加uiview(宽度:320px,高度:1px).现在一切都很顺利.但是当我选择单元格时,行选择背景视图覆盖整行i.但我想将行选择后备视图高度设置为95.
我尝试了以下方式,cellForRowAtIndexPath但没有用,请帮助我.
cell.selectedBackgroundView.frame = CGRectMake (0, 0, 320, 95);
Run Code Online (Sandbox Code Playgroud) 我们可以UITableViewCell在不重新加载的情况下更改其中单击按钮的内容大小吗?当我做reloadData()或reloadCell() UITableView闪烁时,我想避免这种闪烁.
我有一个复杂内容的UITableView.当用标准方式点击"编辑"按钮时,用户可以编辑(重新排列和删除)单元格.但我希望细胞在"编辑"模式下看起来不同.
题:
如何在编辑模式下更改UITableView布局,包括更改行高?
到目前为止,这就是我所拥有的:
"编辑"按钮向每个uitableviewcell(UITVC)发送WillTransitionToState/DidTransitionToState消息.我已经将UITVC子类化并对每个单元内的这些进行反应,根据需要进行隐藏和移除以及重新洗牌.但是,更改行高超出了一个单元格的范围.
当用户点击编辑时,似乎没有向UITableView发送消息.有一个 - tableView:commitEditingStyle:forRowAtIndexPath:在编辑特定行后发送到数据源.
在heightForRowAtIndexPath里面,我可以使用tableView.editing属性查询当前模式,并根据需要报告高度.我可以通过调用[tableView reloadData]来触发重新流动表,包括重新计算高度.但是,我什么时候打电话给它?
我可以将来自WillTransitionToState内的单元格的消息发送回"拥有"表视图,并在获取它们时调用reloadData.但这听起来很脆弱,必须有更好的方法.
uitableview ×8
ios ×5
objective-c ×4
iphone ×3
animation ×1
cocoa-touch ×1
ios5 ×1
reloaddata ×1
swift ×1