いくつかのUILabelを更新し、オフスクリーンからオンスクリーンへのオブジェクトのアニメーションを開始するために使用する一連のUIButtonがあります。進行はこのようになります。ボタン1と2が表示され、ユーザーがボタンを押すとUILabelが更新され、新しいUIImageViewが画面上でアニメーション化されます。これは最初の反復で正常に機能し、ラウンド2では、非表示になっていたボタン3と4が表示されます。ユーザーがボタン3または4のいずれかを選択すると、別のUIImageViewが画面上でアニメーション化されます(他の画像の上に...それらを「スタック」します)。何が起こっているのかというと、ユーザーがボタン1または2のいずれかを押した後にアニメーション化されたUIImageViewが消え、何もアニメーション化されません。これは、UILabelがボタンの選択に基づいて更新する必要がある場合にのみ発生します。UILabelを更新する必要がない場合、アニメーションは正常に機能します。
関連コード:
-(IBAction)didTapSizeButton:(id) sender {
if ([sender tag] == 1) {
sizeLabel.text = @"12 oz";
}
else if ([sender tag] == 2) {
sizeLabel.text = @"24 oz";
}
if (coasterTwo.center.x != 150) {
[UIView animateWithDuration:0.35
delay:0
options:(UIViewAnimationOptionCurveEaseOut)
animations:^{
coasterTwo.center = CGPointMake(150, 220);
} completion:^(BOOL finished) {
}];
}
containerOne.hidden = NO;
containerTwo.hidden = NO;
}
-(IBAction)didTapContainerButton:(id)sender {
if ([sender tag] == 3) {
containerLabel.text = @"Bottle";
}
else if ([sender tag] == 4) {
containerLabel.text = @"Can";
}
if (coasterTwo.center.x == 150 && coasterThree.center.x != 150) {
[UIView animateWithDuration:0.35
delay:0
options:(UIViewAnimationOptionCurveEaseOut)
animations:^{
CGPoint center = coasterThree.center;
center.x += 305;
coasterThree.center = center;
}
completion:^(BOOL finished){
}];
}
}
UILabelを更新するために戻ってくるとすぐに、UIImageViewsは明らかに開始位置にリセットされます...それを防ぐ方法がわかりません。