在屏幕上永久移动一帧自定义 UIView

Permanently move a frame of custom UIView on screen

我对 iOS 和 Objective-c 上的动画有一点小问题。 我正在尝试创建一个纸牌游戏,当游戏开始时,牌组会在 table 上分发纸牌并播放动画。问题是一开始卡片都在屏幕底部排成一排,然后随着动画它们分布在整个 table。但是当我点击他们中的任何一个时,他们 return 在他们的初始位置,尽管游戏继续工作,因为他们翻转和取消翻转,以及分数正常工作。我附上了一些代码片段和视图片段。

以下是屏幕截图的链接:

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];
}

在动画之前调用 [super viewDidAppear] 并关闭自动布局。我认为自动布局会导致这个