永久移动屏幕上的自定义UIView框架

时间:2015-02-23 09:22:09

标签: ios objective-c uiviewanimationtransition

我对使用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];
}

1 个答案:

答案 0 :(得分:0)

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