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