通过使用你早已熟悉和喜爱的相同 API, serially 执行 UIView 动画而不阻塞主线程。
该类的主要目标是使基于事件的动画更容易执行(例如,用户点击按钮或网络回调完成)。一个完美的例子是在接收到推送通知时在应用中显示横幅。只需将动画块添加到 BRYSerialAnimationQueueInstance
,它们将只在之前排队的所有动画都完成后执行。
一个额外的优点是可以替换像这样的嵌套动画代码
[UIView animateWithDuration:duration animations:^{
label.alpha = 1;
} completion:^(BOOL finished) {
[UIView animateWithDuration:duration delay:delay animations:^{
label.alpha = 0;
} completion:^(BOOL finished) {
[label removeFromSuperview];
}];
}];
可以替换为以下更干净的东西
[queue animateWithDuration:duration animations:^{
label.alpha = 1;
}];
[queue animateWithDuration:duration delay:delay animations:^{
label.alpha = 0;
} completion:^(BOOL finished) {
[label removeFromSuperview];
}];