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