【问题标题】:UITableViewCell animation while scrolling滚动时的 UITableViewCell 动画
【发布时间】:2011-08-28 17:22:43
【问题描述】:

我有一个带有自定义 UITableViewCells 的 UITableView。这些单元格可以通过动画打开和关闭。当用户滚动时,我想关闭单元格。我通过发布这样的通知来做到这一点:

[[NSNotificationCenter defaultCenter] postNotificationName:@"closeSwipedCell" object:nil];

这将调用一个方法,该方法在我的 UITableViewCell 子类中执行我的简单动画。这工作正常,但动画不会发生,直到用户再次停止滚动 UITableView。 滚动表格视图时是否可以执行此动画?

【问题讨论】:

  • 我知道,例如,如果单元格中有 UIWebView 加载一些图片,那么当表格视图滚动时,即使已经加载图片也不会出现。
  • 你为什么使用通知?您是否尝试过直接从滚动视图委托调用单元格动画方法(UITableView 是 UIScrollView 子类)?考虑到通知不是立即发送,而是为下一个运行循环合并,所以可能是在滚动期间没有发送消息,然后这解释了动画的延迟。这只是猜测
  • 通知可能不是最优雅的解决方案,但它似乎是最简单的,因为我必须存储活动单元格并在滚动时调用它以避免使用通知。似乎通知是在单元格开始动画时立即发送的。打开时,单元格会向右滑动(有点像 Tweetie/Twitter),然后在关闭时会做一些弹跳动画。它确实会关闭,但不会制作小“反弹”动画,如果我在不滚动的情况下调用该方法(例如再次滑动单元格)

标签: iphone objective-c uitableview animation scroll


【解决方案1】:

这里非常详细地说明了如何滑动到单元格子菜单,例如 twitter iphone 应用程序。我认为这与您要查找的内容非常相似。它不使用通知来关闭单元格,它使用来自 UIScrollViewDelegate 的事件,正如其他评论者所推荐的那样。

iDevRecipes 在 idevrecipes.com 上查找名为“Twitter iPhone 应用程序如何在桌子上实现侧滑”的帖子。

有很好的描述,还有代码可供下载。

【讨论】:

  • 这是一种比我更好的实现方式。我什至没有想到使用 UITableView 来检测滑动等。相反,我正在检测 UITableViewCell 的子类上的滑动。那麻烦多了。非常感谢。
【解决方案2】:

你应该能够监听UIScrollViewDelegate方法scrollViewDidScroll:然后触发你的事件。

查看Apple docs on UIScrollViewDelegate

编辑:如果我不清楚,UITableViewDelegate 符合 UISCrollViewDelegate

【讨论】:

  • 这就是我目前正在做的事情。当我的表格视图关闭时,它会产生“反弹效果”。我通过将 UITableViewCell 子类中的子视图向后和第四次滑动来实现此效果,但这在用户停止滚动之前不会发生。
【解决方案3】:

scrollViewDidScroll: 只能在用户滚动结束时调用。您可能想尝试使用scrollViewWillBeginDragging: 委托方法触发通知,该方法肯定会在滚动操作开始时调用。

还有几个UIViewAnimationOptions 常量(IIRC,UIViewAnimationOptionBeginFromCurrentState 是我想到的)会影响动画是否会在另一个动画动作(例如滚动(跟踪))期间开始。

您需要在动画方法调用的 options: 参数中将该选项与现有动画选项一起 OR

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多