iphone - 实现照片应用程序的全屏栏消失行为

标签 iphone objective-c ios multithreading cocoa-touch

我正在开发一个应用程序,与照片应用程序类似,需要利用整个屏幕来显示图像。现在,我正在研究当用户点击屏幕时状态、导航和选项卡栏消失并重新出现的行为。我让它根据需要工作,唯一的问题是消失动画发生之前的暂停使用户无法按下导航栏和选项卡栏上的按钮。这是我的代码:

[UIView animateWithDuration:.25 delay:5.5 options:UIViewAnimationOptionAllowUserInteraction animations:^
{
    self.navigationController.navigationBar.alpha = 0;
    self.tabBarController.tabBar.alpha = 0;
    [[UIApplication sharedApplication] setStatusBarHidden:YES];
}
completion:nil];

因此,显而易见的解决方案是创建一个在休眠 5.5 秒的动画之前运行的线程。有谁知道如何使用中央调度来实现这一点,或者最好的方法是什么?或者有人有更清洁的解决方案吗?我读到在GCD中使用sleep不好,而且基本上我没有太多的线程编程经验,有点困惑。

最佳答案

当然。使用dispatch_after:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 5.5 * NSEC_PER_SEC), dispatch_get_main_queue(), ^(void){
    [UIView animateWithDuration:0.25 animations:^{
        self.navigationController.navigationBar.alpha = 0;
        self.tabBarController.tabBar.alpha = 0;
        [[UIApplication sharedApplication] setStatusBarHidden:YES];
    }];
});

关于iphone - 实现照片应用程序的全屏栏消失行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8641589/

相关文章:

iphone - 使用按钮删除字符

ios - 有没有办法以动态的初始方向启动 iOS 应用程序?

ios - Unwind Segue 在 iOS 8 中不起作用

ios - Objective C 解析问题

iOS Swift 如何根据下拉列表中的选择显示动态用户界面

ios - 使用 RestKit 与 ios 5 核心数据并发时崩溃

iOS : WHO'S in charge of refreshing UI/Screen while UITableView's scrolling?

css - 如何用Bootstrap确认不同的移动平台?

ios - 调整 UILabel 的字体,使文本适合标签的边界

iphone - UITableView 钩子(Hook)方法的调用顺序是什么?