0

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

4

2 回答 2

0

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

或者构建一个分组动画。

于 2013-03-07T00:22:06.307 回答
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
}
于 2013-03-07T02:26:27.680 回答