Реализация исчезновения в полноэкранном режиме приложения «Фото» - PullRequest
0 голосов
/ 27 декабря 2011

Я работаю над приложением, которое, подобно приложению для фотографий, должно использовать весь экран для изображений. Сейчас я работаю над тем, чтобы статус, навигация и панели вкладок исчезали и появлялись снова, когда пользователь касался экрана. Он работает по мере необходимости, единственная проблема - пауза перед исчезновением анимации, которая не позволяет пользователю нажимать кнопки на панели навигации и панели вкладок. Вот мой код:

[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 секунд. Кто-нибудь знает, как реализовать это, используя грандиозную центральную диспетчеризацию, или каков наилучший способ сделать это? Или у кого-нибудь есть более чистое решение? Я читал, что не рекомендуется использовать sleep в GCD, и в основном у меня нет большого опыта программирования потоков, и я немного запутался.

1 Ответ

1 голос
/ 27 декабря 2011

Конечно. Используйте 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];
    }];
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...