では、ブロック アニメーションを使用してラベルをアニメーション化することにしました。
ロジックは非常に単純です。ボタンで構成されたチャートバーがあり、ボタンが押されると幅のないラベルが作成され、同じ方法でアニメーションがラベルを長くし始め、ラベル内の単語が出てきて、2.5 秒の短い遅延の後、ラベルは再び縮小し、スーパービューから削除されました。
問題は :
遅延は OS 4.3 で正しく機能しています。アニメーションは意図したとおりに機能し、ラベルが表示されます。2.5 以降では、次のアニメーションが開始され、ラベルが閉じられます。
OS 5.0 では遅延は無視されます。最初のアニメーションが完了した後、遅延を待たずに、次のアニメーション ブロックをすぐに開始します。
アニメーションに関する私のコードの一部を次に示します。
UILabel *lbl = [self createLabelWithText:numString frame:CGRectMake(touchPoint.x, touchPoint.y, 0, 10) bold:YES font:@"Helvetica" fontSize:10 color:[UIColor whiteColor] textAlignment:UITextAlignmentLeft andTag:987];
[lbl setBackgroundColor:[UIColor blackColor]];
[lbl setAlpha:0.5];
[self.view addSubview:lbl];
[UIView animateWithDuration:0.3 animations:^
{
[lbl setFrame:lblRect];
}completion:^(BOOL finished)
{
[UIView animateWithDuration:0.2 delay:2.5 options:UIViewAnimationOptionCurveEaseInOut animations:^
{//here the second animation delay run properly on 4.3 , but ignored at 5.0
[lbl setFrame:CGRectMake(touchPoint.x, touchPoint.y, 0, 10)];
}completion:^(BOOL finished) {
[lbl removeFromSuperview];
}];
}];
よろしくお願いします。
編集 : なぜこの人が Google やその他のスタックオーバーフローの質問で検索しなかったのか疑問に思っている方のために、実際に検索しましたが、悲しいことに、見つけたすべての投稿で必要な回答が得られません。:(