我正在为我们的游戏构建一个标题序列,其中每个标题都是一个大约半屏幕大小的视网膜图像,我使用 UIImageView
显示它。
随着它逐渐增长和淡入/淡出,标题序列具有简单的 3 个阶段:
// 1. Fade in and grow
[UIView animateWithDuration:1.0f animations:^{
titleImageView.alpha = 1.0f;
titleImageView.transform = CGAffineTransformMakeScale(1.0f, 1.0f);
} completion:^(BOOL finished) {
// 2. Stay opaque, grow a little more
[UIView animateWithDuration:2.0f animations:^{
titleImageView.transform = CGAffineTransformMakeScale(1.1f, 1.1f);
} completion:^(BOOL finished) {
// 3. Fade out, grow even further
[UIView animateWithDuration:2.0f animations:^{
titleImageView.alpha = 0.0f;
titleImageView.transform = CGAffineTransformMakeScale(1.3f, 1.3f);
} completion:nil];
}];
}];
在每个动画阶段开始时,都会出现一两帧掉线的卡顿现象。在 iPhone 4 和 iPad 3 等旧硬件上尤其明显,但在 iPad Air 上甚至更明显,这令人惊讶。
一些扣除:
UIImage
本身的加载无关,因为我已经尝试过预加载数据并确保 PNG 已解压缩。此外,动画的每个阶段都会出现卡顿,即使它已经在屏幕上显示了一段时间。transform
更改时,CALayers 肯定不需要在 CPU 上重新创建任何图像数据吗?另外请注意,我在后台运行了一些 OpenGL ES 图形(这是一个在前台使用 UIKit 控件的游戏),但过去并没有造成问题...
所以,它有点难看,但我同时用两种方法解决了它:
关于ios - 动画转换大型 UIImageView 时性能不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23998481/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |