クラスで次のメソッドを呼び出して無限にアニメーション化するビューコントローラーのメインビュー内に、uiview のサブクラスのオブジェクトがいくつかあります。
- (void)hover:(NSNumber *)upDown {
int sense = [upDown intValue];
[UIView animateWithDuration:0.8 delay:0.1 options:UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction
animations:^{
CGRect frame = self.frame;
frame.origin.y += (sense==1?1:-1) * 5;
self.frame = frame;
}
completion:^(BOOL finished){
[self hover:[NSNumber numberWithInt:(sense==1?0:1)]];
}];
}
デバイスでホームボタンを押すと、アプリが半フリーズし (ホームボタンをかなり長い間繰り返し押すと、アプリは最終的にバックグラウンドに移行します)、他のボタンとのやり取りが機能しなくなることを除けば、うまく機能します。それ以外の場合は正常に動作します。つまり、ホーム ボタンを押さない限り、コントローラーやボタンなどをナビゲートしたり、シミュレーター上で操作したりできます。
何か案は?
更新:犯人は、私がアニメートしているビューに適用している影のようです
self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowOpacity = 1.0;
self.layer.shadowRadius = 5.0;
これは、バックグラウンド状態に入ることができないアプリにのみ影響するある種のオーバーヘッドを引き起こしているようです???
誰もこれに遭遇しましたか?
更新:最終的に、そのコードを削除し、drawRect: メソッドで Quartz を使用して影を描画することにしました。問題は、iPhone がバックグラウンド モードに入る前に取得するスナップショットと、境界外のレイヤーに適用される影に関係していると思われますが、それは単なる推測です。