1

Obj C for iOS を使い始めたばかりでUIImageView、サブビュー内のすべてのビュー ( ) をアニメーション化しようとしていましたが、遅延時間を 1 秒未満に設定すると、アニメーションはすべてのビューを一度にアニメーション化します。遅延を 1 秒以上に設定すると、アニメーションは正しく行われますが、2 番目のアニメーションは最初のアニメーションが完了した後にのみ開始されます。これらのすべてのビューを連続してアニメーション化する必要があります。たとえば、ビュー番号 1 がアニメーション化を開始し、完了する前に 2 番目のビューがアニメーション化を開始する必要があります。

これが私のコードです。

-(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になります)。これが、1秒未満のすべての「遅延」がすぐに開始される理由ですint。変数は10進値を保持できません。

代わりに正しいタイプを使用する必要がありますNSTimeInterval

NSTimeInterval delaytime = 0.3;
于 2012-08-10T11:18:52.727 に答える