UIView AnimateKeyFrames All At Once

时间:2015-03-28 19:20:59

标签: objective-c animation uiview nslog duration

为什么我的所有NSLog都会一次运行?

我的理解是每一个应该相隔一秒钟。这是不正确的?

[UIView animateKeyframesWithDuration:5.0 delay:0.0 options:0 animations:^{
        [UIView addKeyframeWithRelativeStartTime:0.0 relativeDuration:1 animations:^{
            NSLog(@"1");
        }];
        [UIView addKeyframeWithRelativeStartTime:1 relativeDuration:1 animations:^{
            NSLog(@"2");
        }];
        [UIView addKeyframeWithRelativeStartTime:2 relativeDuration:1 animations:^{
            NSLog(@"3");
        }];
        [UIView addKeyframeWithRelativeStartTime:3 relativeDuration:1 animations:^{
            NSLog(@"4");
        }];
        [UIView addKeyframeWithRelativeStartTime:4 relativeDuration:1 animations:^{
            NSLog(@"5");
        }];
        [UIView addKeyframeWithRelativeStartTime:5 relativeDuration:1 animations:^{
            NSLog(@"6");
        }];
    } completion:nil];

这是我的日志:

2015-03-28 14:10:52.409 AppName[636:80664] 1
2015-03-28 14:10:52.409 AppName[636:80664] 2
2015-03-28 14:10:52.409 AppName[636:80664] 3
2015-03-28 14:10:52.409 AppName[636:80664] 4
2015-03-28 14:10:52.410 AppName[636:80664] 5
2015-03-28 14:10:52.410 AppName[636:80664] 6

1 个答案:

答案 0 :(得分:0)

您的relativeStartTime错误,此值应为0.0到1.0,这是整个持续时间的百分比。

请参阅Apple对此功能的评论:

开始时间和持续时间是0.0到1.0之间的值,指定相对于关键帧动画总时间的时间和持续时间

启动指定动画的时间。此值必须在0到1的范围内,其中0表示整个动画的开头,1表示整个动画的结束。例如,对于持续时间为两秒的动画,指定开始时间为0.5会导致动画在整个动画开始后的一秒钟内开始执行。

参考:see more