Показать / скрыть элементы управления перед вращением - PullRequest
1 голос
/ 21 ноября 2011

У меня есть макет, работающий с использованием UISplitViewController, с некоторыми пользовательскими элементами управления внизу каждой панели. Когда я поворачиваю вид в портретный режим, я хочу скрыть элементы управления основного вида, пока он находится в режиме всплывающего окна. Эта часть отлично работает.

Вот код:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
        if(UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
            _refreshButton.hidden = NO;
            _aboutButton.hidden = NO;
            _bottomBar.hidden = NO;
        }
        if(UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
            _refreshButton.hidden = YES;
            _aboutButton.hidden = YES;
            _bottomBar.hidden = YES;
        }
    }   
}

Проблема в том, когда я возвращаюсь в ландшафтный режим. Элементы управления появляются снова, но только после завершения вращения. Это функционально, но безобразно. Есть ли способ заставить их перерисовать, прежде чем вращение действительно произойдет?

1 Ответ

0 голосов
/ 21 ноября 2011

По моему опыту со встроенными анимациями Apple, они будут блокировать все, что происходит во время предварительной обработки.Это, в частности, происходит, когда вы хотите отобразить предварительный загрузчик, в то время как вы делаете немного волшебства со своим интерфейсом.Чтобы решить эту проблему, нужно выполнить собственное управление графическим интерфейсом в другом потоке:

[self performSelectorInBackground:@selector(showHideMenu) withObject:nil];

или, если возможно, удалить задачу анимации, пока вы не выполните то, что хотите

[self showHideMenu];
[self performSelector:@selector(doRotation) withObject:nil afterDelay:1];
...