作成中の iPhone アプリで表示する必要があるこの GIF を作成するために、私は地獄のように努力しています。アプリのプロファイルを作成している時点で、継続的に割り当てられていてUIColor
、事実上すべての電話の 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:]: 空の配列の範囲を超えたインデックス 1 を返します