我正在努力制作这个我必须在我正在构建的 iPhone 应用程序上显示的 GIF。我现在正在分析应用程序,我意识到我一直被分配到 aUIColor
并且它几乎使用了手机的所有 CPU。
我整个早上都在努力优化这个用于创建和运行动画的功能。如果有人有一些见解,我将不胜感激。
我只是想把 UIColor 从 for 语句中拉出来,但也许有人会看到我可以用更好的方式做到这一点。
- (void)doBackgroundColorAnimation
{
static NSInteger i = 0;
int count = 34;
NSMutableArray *colors = [[NSMutableArray alloc] initWithCapacity:count];
for (int i=1; i<=34; i++) {
NSString *strImgName = [NSString stringWithFormat: @"layer%d.png", i];
UIColor *image = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:strImgName]];
if (image) {
[colors addObject:image];
}
}
if (i >= [colors count]) {
i = 1;
}
[UIView animateWithDuration:0.05f
animations:^{
self.animationView.backgroundColor = [colors objectAtIndex:i];
} completion:^(BOOL finished) {
++i;
[self doBackgroundColorAnimation];
}];
}
编辑:请求发布代码
NSMutableArray *colors = [[NSMutableArray alloc] initWithCapacity:count];
static NSString *strImgName;
UIColor *image = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:strImgName]];
for (int i=1; i<=34; i++) {
strImgName = [NSString stringWithFormat: @"layer%d.png", i];
if (image) {
[colors addObject:image];
}
}
返回 -[__NSArrayM objectAtIndex:]: index 1 beyond bounds for empty array