iphone - UITableView 动画的回调

标签 iphone uitableview animation callback

是否有包含 UITableView 动画更改结束回调的委托(delegate)协议(protocol)?特别是 reloadSection/Rows?

最佳答案

实际上,确实似乎有一种方法可以做到这一点(尽管并不像应有的那么简单!)。

虽然无法直接访问某种回调,但 UITableView 动画似乎发生在 CAAnimation 内。因此,只需访问 CAAnimationcompletionBlock 似乎就能满足您的需求。

以下是我在 UITableView 子类中链接 2 个动画的方法:

#pragma mark - Section expanding/collapsing
- (void)toggleSection:(NSInteger)index {
    int expandedSection = [self ExpandedSection];
    if (expandedSection != NO_EXPANDED_SECTIONS_INDEX) {
        [self beginUpdates];
        [self collapseSection:@(expandedSection)];
        [CATransaction setCompletionBlock:^{
            if (expandedSection != index) {
                [self beginUpdates];
                [self expandSection:@(index)];
                [self endUpdates];
            }
        }];
        [self endUpdates];
    } else {
        [self expandSection:@(index)];
    }
}

collapseSection:expandingSection: 方法中的代码只是添加/删除需要折叠或展开的子部分。不过,这里的关键点是,当使用此代码时,我终于能够折叠一个子部分然后展开下一个子部分。之前,两个动画同时发生,这在视觉上没有吸引力。

希望这对您有帮助!我在这个问题上挣扎了很长时间,把头撞在墙上,直到我找到了这个。

这是针对 iOS 6.0 编写的。我也真心希望 future 的版本能让这个解决方法/黑客变得过时!

关于iphone - UITableView 动画的回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2802146/

相关文章:

iphone - 如何在 iPhone 中绘制可调整大小的多边形?

iPhone 问题 : How can I add a button to a tableview cell?

ios - 如何在 UITableViewCell 中获取屏幕宽度?

android - 作为场景更改动画/过渡的一部分,我如何为高程变化设置动画?

android - LinearGradient中心动画

iphone - Bing Api 不适合我

iphone - 编译器无法识别类的存在,即使在导入 header 之后也是如此

iphone - 如何动态设置 ScrollView 内容大小?

ios - 如何正确初始化自定义 UITableviewCell?

iphone - 如何学习 "Animations in COCOS2D"