我不太喜欢 iOS 动画。我想要实现的是一个简单的消息视图,它从屏幕底部垂直滑动到给定的 y,然后在几分钟后 UIView 垂直回滚以离开屏幕。
[UIView animateWithDuration:0.5f
animations:^{
self.messageView.frame=CGRectMake(x, y -80, width, height);
}
completion:^(BOOL finished){
if (finished) {
[UIView animateWithDuration:0.5f delay:2.0f options:UIViewAnimationOptionCurveLinear
animations:^{
self.messageView.frame=CGRectMake(x, y + 80, width, height);
}
completion:^(BOOL finished){
// do something...
}
];
}
} ];
这工作正常,但我在 iOS UITabBar 应用程序中使用此机制时遇到问题:当我更改选项卡时,动画停止,我实际上可以看到“完成”完成是“假”。因此不调用第二个块,并且消息视图保持打开。
以下是问题:
- 我首先关心的是了解我编写的代码是否正确,关于嵌套动画。
- 我可以通过忽略“完成”并执行代码来解决,但我觉得这不是一个好主意
- 在最后一个完成块中,我放置了一些编程逻辑,基本上我正在恢复一些 UIButtons 状态,以及其他一些小的 UI 更改。此时不知道是不是好主意,好像不是,但是怎么能让UI知道消息视图已经消失了。当涉及到快速响应的 UI 更改时,NSNotification 和 KVO 似乎是个坏主意。