2 cocoa-touch objective-c uiscrollview uiview ios
假设有一些我想确保在它被执行时永远不会被调用的东西.
例如UIScrollView,scrollViewDidScroll:每当发生任何缩放时调用该方法的位置.如果我想[UIView animateWithDuration...]第一次调用它,但不允许后续调用"覆盖"已播放的动画,该怎么办?
dispatch_once 如果它不是因为它只允许它在每个程序执行时运行一次,当我需要它运行多次,而不是同时覆盖另一个时,它将完美地工作.
我怎样才能阻止后续调用搞砸了?
如果我理解那么这样的东西应该工作(因为委托总是从主线程调用):
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
static BOOL busy = NO;
if (!busy) {
busy = YES;
[UIView animateWithDuration:0.2 animations:^{
// your animations
} completion:^(BOOL finished) {
busy = NO;
}];
}
}
Run Code Online (Sandbox Code Playgroud)
此代码确保动画只能一次发生一个.
| 归档时间: |
|
| 查看次数: |
334 次 |
| 最近记录: |