我试图实现一种在我的应用程序中截取屏幕截图的方法。我希望UINavigationBar提示向上滑动 - 截取屏幕截图 - 然后UINavigationBar可以轻松下滑。我需要应用程序在某些代码行之间等待/保持几秒钟,因为这样第一个动画没有时间完成:
[self.navigationController setNavigationBarHidden:YES animated:YES ];
[self.navigationController setNavigationBarHidden:NO animated:YES];
那么,有没有一种延迟执行的方法,比如像动画这样的按钮:
[UIView animateWithDuration:0.5 delay:3 options:UIViewAnimationOptionCurveEaseOut animations:^{self.myButton.frame = someButtonFrane;} completion:nil];
问候
答案 0 :(得分:11)
您可以使用:
double delayInSeconds = 2.0; // number of seconds to wait
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
/***********************
* Your code goes here *
***********************/
});
答案 1 :(得分:3)
您可以使用:
[self performSelector:@selector(hideShowBarButton) withObject:nil afterDelay:1.0];
当然:
- (void) hideShowBarButton{
if (self.navigationController.navigationBarHidden)
[self.navigationController setNavigationBarHidden:NO animated:YES ];
else
[self.navigationController setNavigationBarHidden:YES animated:YES ];
}
答案 2 :(得分:0)
虽然setNavigationBarHidden
的完成似乎没有回调,但需要UINavigationControllerHideShowBarDuration
秒。所以只需使用NSTimer
来延迟它:
[NSTimer scheduledTimerWithTimeInterval:UINavigationControllerHideShowBarDuration target:self selector:@selector(myFunction:) userInfo:nil repeats:NO];
您可能希望在延迟时添加一小部分作为故障保护;
[NSTimer scheduledTimerWithTimeInterval:UINavigationControllerHideShowBarDuration+0.05 target:self selector:@selector(myFunction:) userInfo:nil repeats:NO];
另请参阅此相关问题:UINavigationControoller - setNavigationBarHidden:animated: How to sync other animations