// カード クラスのヘッダー ファイル
#import "OWCardView.h"
@implementation OWCardView;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.layer.contents = (id) [UIImage imageNamed:@"4.png"].CGImage;
self.layer.shadowColor = [UIColor whiteColor].CGColor;
self.layer.shadowOpacity = 0.3;
}
return self;
}
- (void) moveCard:(float)xPoint along:(float)yPoint
{
CGRect someRect = CGRectMake(xPoint, yPoint, 72, 96);
[UIView animateWithDuration: 3.5
delay: 0.3
options: UIViewAnimationCurveEaseOut
animations: ^{ self.frame = someRect;}
completion: ^(BOOL finished) { }];
}
@end
// part of the Implementation in the view controller's viewDidLoad
[...]
CGRect myImageRect = CGRectMake(20.0f, 20.0f, 72.0f, 96.0f);
// myCard is a property of the viewController
self.myCard = [[OWCardView alloc] initWithFrame:myImageRect];
[self.view addSubview:self.myCard];
[self.myCard moveCard: 240 along: 355]; // First call
[self.myCard moveCard: 50 along: 355]; // Second call
[self.myCard moveCard: 50 along: 50]; // Third call
[...]
問題: viewController 内の moveCard への最後のメッセージのみが実行されます。最初と 2 番目の呼び出しは実行されません。コードの何が問題になっていますか?
3 番目のメッセージを moveCard out にコメントすると、2 番目の呼び出しが実行され、最初の呼び出しは実行されません。2 番目と 3 番目の呼び出しをコメントアウトすると、最初の呼び出しが実行されます。しかし、私は 3 つのアニメーションすべてをカードで発生させたいと考えています。