首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何进行链式转换?

如何进行链式转换?
EN

Stack Overflow用户
提问于 2013-03-07 08:07:09
回答 2查看 67关注 0票数 0

我在屏幕上有40个UIView磁贴对象。然后,在视图控制器中,我有一个使用transitionFromView消息翻转这些瓦片的例程。如果我在循环中立即翻转它们,在模拟器上看起来很流畅,但在iPhone上它很难翻转它们。这是因为iPhone的CPU/GPU比较慢,不能同时处理这么多的转换。所以我想要的是进行某种链式转换,最终在任何给定的时间转换到5-10。现在每一次翻转需要0.4秒。做到这一点最简单的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-07 10:26:28

我可能会采取将动画一对一地错开的方法。

只需维护一个包含所有要动画化的视图的NSArray *views,并使用[self transformViewAtIndex:[NSNumber numberWithInt:0]];启动该序列

代码语言:javascript
复制
- (void)transformViewAtIndex:(NSNumber *)index {
    // Make sure we're not out of bounds
    if ([index intValue] >= [views count]) return;

    // Get the view we want to work on
    UIView *view = [views objectAtIndex:[index intValue]];

    // Perform the animation
    [UIView animateWithDuration:0.4 animations:^{ // Whatever duration you want
        // ... This is where your actual transformation code goes
    }];

    // Schedule the next animation
    NSNumber *newIndex = [NSNumber numberWithInt:[index intValue] + 1];
    [self performSelector:@selector(transformViewAtIndex:) withObject:newIndex afterDelay:0.2]; // Set delay to a number that is effective
}
票数 0
EN

Stack Overflow用户

发布于 2013-03-07 08:22:06

UIView transition...动画方法需要一个completion块。这就是你的链子。排列您的块,并将它们设置为链中连续调用的完成块。

或者构造成组的动画。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15260690

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档