如何进行链转换?

时间:2013-03-07 00:07:09

标签: iphone ios5 uiview

我在屏幕上有40个UIView图块对象。然后在视图控制器中,我有例程使用transitionFromView消息翻转这些图块。如果我在循环中一次翻转它们,在模拟器上它看起来很平滑,但在iPhone上它正在努力翻转它们。这是因为iPhone CPU / GPU速度较慢,无法一次处理如此多的转换。所以我想要的是进行某种链转换,最终在任何给定时间转换5-10。每个翻转现在需要0.4秒。最简单的方法是什么?

2 个答案:

答案 0 :(得分:0)

UIView transition...动画方法占用completion块。你的连锁店就在那里。将您的块排成一行,并将它们设置为链中连续调用的完成块。

或构建分组动画。

答案 1 :(得分:0)

我可能会采取让动画一个接一个地错开的方法。

只需保留一个NSArray *views,其中包含您要设置动画的所有视图,然后使用[self transformViewAtIndex:[NSNumber numberWithInt:0]];

开始序列
- (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
}