我对使用Objective-c的iOS上的动画有一点问题。 我试图创建纸牌游戏,随着游戏的开始,牌组将卡片分配到桌面上,并带有动画。问题是,在开始时,卡片在屏幕的底部都是排在行中,然后是动画,它们分布在整个桌子上。但是当我点击他们中的任何一个时,他们会返回他们的初始位置,虽然游戏继续工作,因为他们翻转和解开,以及得分正常。我附上了代码和视图的一些片段。
以下是屏幕截图的链接:
1)游戏开始时的牌:prntscr.com/68r8yj
2)初始动画结束时的卡片:prntscr.com/68r92u
3)我点击任何一张卡片:prntscr.com/68r2hr
这是我的代码段
-(void)viewDidAppear:(BOOL)animated {
CGPoint startPoint = {21, 34};
for(int i = 0; i < [self.cardsView count]; i++) {
FrenchPlayingCardView *view = [self.cardsView objectAtIndex:i];
int width = view.bounds.size.width;
int height = view.bounds.size.height;
CGRect newFrame = CGRectMake(startPoint.x, startPoint.y, width, height);
/*[UIView animateWithDuration:1.0
delay:1.0
options:UIViewAnimationOptionTransitionNone
animations:^(){
view.frame = newFrame;;
}
completion:nil];*/
[UIView beginAnimations:@"move" context:nil];
[UIView setAnimationDuration:3.0];
view.frame = newFrame;
[UIView commitAnimations];
NSLog(@"index:%d %f %f", i, view.frame.origin.x, view.frame.origin.y);
startPoint.x += 76;
if(i % 4 == 3) {
startPoint.y += 100;
startPoint.x = 21;
}
}
[super viewDidAppear:animated];
}
答案 0 :(得分:0)
在动画前调用[super viewDidAppear]并关闭自动布局。我认为autolayout会导致这个