KeyFrames的动画出错了

时间:2014-03-23 17:49:33

标签: ios objective-c animation uiviewanimation

我正在玩动画片。

我有一个UIlabel,我想从左侧“飞”到中心,点击按钮后。 标签的初始字符串将位于中心。

我得到的是标签在3秒钟内移动到“原点”,然后在该位置“弹出”。

我希望UILabel在这3秒内“滑动”/动画到目标点 - 顺利进行。 alpha属性似乎也没有使动画流畅。 希望我清楚自己。谢谢。

    - (IBAction)showQuestionButtonPressed:(UIButton *)sender
    {
        // Step to the next question
        self.currentQuestionIndex++;

        // Am I pas the last question?
        if (self.currentQuestionIndex == [self.questions count]) {

            // Go back to the first question
            self.currentQuestionIndex = 0;
        }

        // Get the string at the index in the questions array
        NSString *question = self.questions[self.currentQuestionIndex];

        // Display the string in the question label
        self.questionLabel.text = question;

        // Reset the answer label
        self.answerLabel.text = @"???";
        self.questionLabel.alpha = 1.0;
// the animation animated a little bit after this point:
        CGPoint origin = CGPointMake(0 - (self.questionLabel.frame.size.width/2.0), self.questionLabel.frame.origin.y);
        self.questionLabel.center = origin;


        [UIView animateKeyframesWithDuration:3.0 delay:0.0 options:0 animations:^{
            [UIView addKeyframeWithRelativeStartTime:0.0 relativeDuration:3.0 animations:^{
                self.questionLabel.alpha = 1.0;
            }];
            [UIView addKeyframeWithRelativeStartTime:0.0 relativeDuration:3.0 animations:^{
                self.questionLabel.center = CGPointMake(self.view.center.x, self.questionLabel.frame.origin.y) ;
            }];
        } completion:^(BOOL finished) {
            NSLog(@"finished animation");
        }];
    }

1 个答案:

答案 0 :(得分:1)

relativeDuration应该是介于0和1之间的数字。来自文档:

  

设置指定值动画的时间长度。这个   value必须在0到1的范围内,并指示时间量   相对于整体动画长度。如果指定值0,   您在动画块中设置的任何属性都会立即更新   指定的开始时间。如果指定非零值,则   属性在该时间内动画。例如,对于   持续时间为两秒的动画,指定持续时间   0.5导致动画持续时间为一秒。

此外,如果您使用自动布局,则无法简单地设置标签的center属性。你必须调整你的约束。