私はUIImageViewをUIViewにスライドして同時にフェードインしようとしています。そして、それを消してスライドさせたい。 以下のコードはこれを行うべきですが、そうではありません。 代わりに、leftArrowビューはスライドイン時にフルアルファになります。したがって、最初のアニメーションはアルファフェードインをスキップします。次に、2番目のアニメーションではフェードアウトしますが、leftArrowビューは移動しません。私はフレームの代わりに境界を使用し、クラスメソッド(インスタンスメソッドとは対照的に)でアニメーションを行い、多くのバリエーションを試しました。なぜ、ビューが他のものよりもむしろ1つのことを任意に選択するように見えるのか、 。。または両方 多分私だけで新鮮な目が必要 TIA、 マイクシンプルなUIViewアニメーションチェーンが機能しない
- (void) flashHorizontalArrowsForView: (UIView *)view {
DebugLog(@" flashHorizontalArrows");
float duration = 1.5f;
// create the views
UIImageView *leftArrow = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"leftCouponDetailArrow.png"]];
leftArrow.frame = CGRectMake(0 -leftArrow.image.size.width,
HORIZONTAL_ARROW_START_Y,
leftArrow.image.size.width,
leftArrow.image.size.height);
[view addSubview:leftArrow];
leftArrow.alpha = 0.0f;
// animate them in...
[UIView beginAnimations:@"foo" context:leftArrow];
[UIView setAnimationDelay: 0.0f ]; // in seconds
[UIView setAnimationDuration: duration ];
[UIView setAnimationCurve:UIViewAnimationCurveEaseIn];
[UIView setAnimationDidStopSelector:@selector(animationReallyDidStop:finished:context:)];
[UIView setAnimationDelegate:self];
leftArrow.alpha = 1.0f;
CGRect LFrame = leftArrow.frame;
LFrame.origin.x += LFrame.size.width; // move it in from the left.
leftArrow.frame = LFrame;
[UIView commitAnimations];
// and animate them out
// delay enough for the first one to finish
[UIView beginAnimations:@"bar" context:leftArrow];
[UIView setAnimationDelay: duration+0.05 ]; // in seconds
[UIView setAnimationDuration: duration ];
[UIView setAnimationCurve:UIViewAnimationCurveEaseOut];
[UIView setAnimationDidStopSelector:@selector(animationReallyDidStop:finished:context:)];
[UIView setAnimationDelegate:self];
leftArrow.alpha = 0.0f;
CGRect LLFrame = leftArrow.bounds;
LLFrame.origin.x -= LLFrame.size.width; // move it off to the left.
leftArrow.bounds = LLFrame;
[UIView commitAnimations];
}
ところで、私はXCodeの3.2.4を実行しているし、このアニメーションは4.1 iPhoneシミュレータ、および3.1.3デバイスで失敗します。 – Rayfleck