简而言之,嵌套动画允许同时运行 2 个独立的动画。但是,如果我有一个由动画和非动画代码组成的复杂代码怎么办?我的意思是以下情况:
[UIView animateWithDuration:...
animations:^{
...//code1 - with animation
...//code2 - also contains code which shouldn't be animated
}];
Code2
看起来像以下方法的调用:
- (void)someMethod {
...//code3 - without animation
[self someMethod2Animated:NO completion:^{
[self someMethod2Animated:YES completion:^{
NSLog(...);
}];
}];
}
WheresomeMethod2
执行相同的代码,但可能在animatedWithDuration:animations:completion:
取决于给定BOOL
变量的内部。
如果我运行这段代码,我会看到所有代码部分都是动画的。我试图将 的持续时间设置code2
为零,但它没有效果(代码仍然是动画的)。
你能建议如何在不重写所有代码的情况下解决这个问题吗?我听说过一些解决方案,ReactiveCocoa
但似乎它们仅适用于网络/单独的异步请求。
已编辑
PromiseKit 2.0 允许将封闭的动画块转换为一系列块,但它不支持我需要的 iOS 7。