刚刚开始使用Obj C for iOS,我试图在我的子视图中设置所有视图(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");
}];
}
}
答案 0 :(得分:2)
您的延迟变量是int
,因此始终将向下舍入为整数值(0.3变为0,甚至0.9999变为0)。这就是为什么所有“延迟”不到一秒钟立即启动的原因,int
变量不能保存十进制值。
您应该使用正确的类型NSTimeInterval
NSTimeInterval delaytime = 0.3;