1

刚开始在 iOS 上使用 Obj C,我试图为UIImageView我的子视图中的所有视图 () 设置动画,但是当我将延迟时间设置为小于 1 秒时,动画会立即为所有视图设置动画。如果我将延迟设置为 1 秒或更多,它将正确设置动画,但第二个动画只会在第一个动画完成后开始。我想为所有这些视图设置动画,例如第 1 个视图将开始动画,在它完成之前,第二个应该开始动画。

这是我的代码。

-(void)animate
{
    int delaytime = 0.3; //first view will start after 0.3 secs

    for(UIView *view in self.subviews)
    {
        view.alpha = 0; //set it to transparent
        delaytime += 1 ; //couldn't get the desired effect when it is less than 1
        [UIView animateWithDuration:0.3
                              delay:delaytime
                            options: UIViewAnimationOptionTransitionNone
                         animations:^{
                             view.alpha = 1;       // fade in             }
                         completion:^(BOOL finished){
                             NSLog(@"Complete");
                         }]; 
    }
}
4

1 回答 1

2

您的延迟变量是一个int,因此总是向下舍入整数值(0.3 变为 0,甚至 0.9999 变为 0)。这就是为什么所有小于一秒的“延迟”都会立即为您启动,一个int变量不能保存十进制值。

您应该改为我们正确的类型NSTimeInterval

NSTimeInterval delaytime = 0.3;
于 2012-08-10T11:18:52.727 回答