ios开发 cell从屏幕外滑动进屏幕里面 重新走刷新表格的方法吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios开发 cell从屏幕外滑动进屏幕里面 重新走刷新表格的方法吗相关的知识,希望对你有一定的参考价值。

参考技术A 不走,不过可以自己设置,cell从屏幕外进屏幕里会执行cell的复用

滑动 UITableViewCell

【中文标题】滑动 UITableViewCell【英文标题】:Slide UITableViewCell 【发布时间】:2011-04-12 19:54:26 【问题描述】:

我的目标是让UITableViewCell 从屏幕的一侧滑出(就像在 Twitter 中一样),然后从另一侧滑回。我能够使单元格从屏幕右侧滑出,但我似乎无法弄清楚如何让它从右侧滑回屏幕。这是我将其滑到右侧的代码:

UITableViewCell *cell = [self cellForRowAtIndexPath:indexPath];
[cell.layer setAnchorPoint:CGPointMake(0, 0.5)];
[cell.layer setPosition:CGPointMake(cell.frame.size.width, cell.layer.position.y)];
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position.x"];
[animation setRemovedOnCompletion:NO];
[animation setDelegate:self];
[animation setDuration:0.14];
[animation setTimingFunction:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];
[cell.layer addAnimation:animation forKey:@"reveal"];

感谢您的帮助!

【问题讨论】:

【参考方案1】:

UITableView 提供插入和删除带有动画的行的方法,并为您处理所有动画。试试这样的:

[tableView beginUpdates];
[tableView deleteRowsAtIndexPaths:myIndexPaths
                 withRowAnimation:UITableViewCellRowAnimationRight];
[tableView endUpdates];

然后滑入一个新的单元格:

[tableView beginUpdates];
[tableView insertRowsAtIndexPaths:myNewIndexPaths
                 withRowAnimation:UITableViewCellRowAnimationLeft];
[tableView endUpdates];

beginUpdates/endUpdates 方法导致动画被批处理并一次执行。

注意两件事:

    对于大量表数据,插入可能需要很长时间(特别是如果您实质上要替换整个表)。在这种情况下调用[tableView reloadData] 效果更好,但deleteRowsAtIndexPath:withRowAnimation: 仍然可以用于获得漂亮的视觉效果。

    您必须确保支持您的表的实际数据相应地正确更改。也就是说,如果您要从表格中删除或插入行,那么为表格提供数据的数组(或其他)也必须正确反映每个步骤中表格中有多少行。

【讨论】:

这在我的情况下不起作用(请参阅我关于 XJones 的答案的 cmets)。我真正需要的是一种与我的问题相反的方法。 我使用我描述的技术来为自定义表格单元格设置动画,这是值得的。祝你好运!【参考方案2】:

您想要的行为应该通过动画单元格的子视图来完成,而不是单元格本身。单元格应留在表格中。在 contentArea 中创建一个包含您想要的子视图的自定义单元格,然后根据需要滑动这些子视图。

标准的基于 UIView 块的动画应该也适用于此。

【讨论】:

我实际上必须为实际单元格而不是视图设置动画,因为这是针对越狱设备的 MobileSubstrate 调整。我在 MobileMusicPlayer 应用程序中的单元格上执行此操作,他们使用自定义 UITableViewCell 将自定义 UIView 实现为内容视图,我无权访问这些视图。因此,创建自定义单元格也不是一种选择。 我相信你的话。通常,如果您可以访问单元格,那么您可以访问 contentView 属性(与单元格的超类无关)并且可以设置动画。对实际单元格进行动画处理可能最终会产生不可预测的副作用/行为。希望你能成功。 在单元格上调用 contentView 返回 nil。显然,MobileMusicPlayer 中的单元格不是空的。而且 Apple 并没有在他们的自定义单元格中放置一个属性来访问内容视图。 叔叔!当您超出“正常”的做事方式时,您就超出了我的专业知识范围。

以上是关于ios开发 cell从屏幕外滑动进屏幕里面 重新走刷新表格的方法吗的主要内容,如果未能解决你的问题,请参考以下文章

iOS之tableView性能优化/tableView滑动卡顿?

滑动 UITableViewCell

React Native -Flatlist闪屏或者滑动抖动

嵌套集合视图单元格未在方向更改时调整大小

是否可以在 iOS 模拟器中进行边缘滑动?

从左滑动返回之前风格的 iOS 屏幕 Flutter