Pertanyaan bagaimana cara menambahkan animasi bouncing ke animateWithDuration?


Saya memiliki animasi sederhana yang melakukan dalam metode delegasi tampilan gulir saya scrollViewDidEndDragging.

Terlihat seperti ini:

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {

    NSLog(@"finger was lifted");

    [UIView animateWithDuration:1.0
                     animations:^{
                         self.homeLabel.frame = self.view.frame;
                    }];
}

Menggunakan animasi ini setelah mengangkat jari saya homeLabel berasal dari atas, dan saya ingin menambahkannya animasi bouncing ke label, jadi ketika datang dari atas, bukannya mendarat dengan lancar itu akan memiliki lompatan yang bagus ... bagaimana saya bisa MELAKUKANNYA? terima kasih


5
2018-01-13 16:38


asal


Jawaban:


Anda dapat menggunakan usingSpringWithDamping fungsi animasi.

[UIView animateWithDuration:1.0 delay:0 usingSpringWithDamping:0.2 initialSpringVelocity:5.0 options:UIViewAnimationOptionCurveLinear animations:^{
    self.homeLabel.frame = self.view.frame;
} completion:^(BOOL finished) {

}];

Menyesuaikan Spring Damping dan Initial Spring Velocity dapat memberi Anda efek yang Anda inginkan.


17
2018-01-13 17:03



Satu solusi yang baik adalah membuat lapisan khusus untuk tampilan Anda yang menimpa addAnimation:forKey: metode untuk menyertakan fungsi waktu kustom.

Ini menjawab masuk ke spesifik tentang bagaimana melakukan itu.

Pilihan lain adalah dengan melihat animasi bingkai kunci. Ini pertanyaan dan jawaban mencakup pendekatan itu dengan sangat baik.


0
2018-01-13 16:50