Переключить строку состояния iOS 7 с помощью UISwitch

Я пытаюсь использовать UISwitch для переключения строки состояния (Xcode 5, iOS 7). У меня сейчас есть этот код

- (BOOL)prefersStatusBarHidden
{
    return YES;
}

Это полностью скрывает строку состояния. но я хочу скрыть и показать строку состояния с помощью UISwitch или нажатием кнопки. Как мне это сделать ?

Я думаю, что возврат логического значения (YES или NO) в prefrersStatusBarHidden сделает эту работу. Но я не смог найти никакого руководства по возврату значений в BOOL.


person Kola Lolla    schedule 16.08.2014    source источник


Ответы (2)


Пусть ваш prefersStatusBarHidden вернет свойство вашего объекта, например self.hideStatusBar, затем в вашем методе для кнопки/переключателя выполните:

// Set self.hideStatusBar value based on what the user did
if ([self respondsToSelector:@selector(setNeedsStatusBarAppearanceUpdate)])
{
    // iOS 7+
    [self prefersStatusBarHidden];
    [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}
else
{
    // iOS 6
    [[UIApplication sharedApplication] setStatusBarHidden:self.hideStatusBar withAnimation:UIStatusBarAnimationSlide];
}

Приведенный выше код взят из другого ответа StackOverflow.

Обязательно задайте self.hideStatusBar значение по умолчанию!

person Joseph Duffy    schedule 16.08.2014
comment
Спасибо .. Однако это не сработало. но я прошел по ссылке, которую вы дали, и нашел метод как еще один ответ! - person Kola Lolla; 16.08.2014

Решение от OP.

в заголовке файла .h

@interface ViewController ()
@end

BOOL shouldHideStatusBar;

код

- (BOOL)prefersStatusBarHidden {
    return shouldHideStatusBar;
}

- (void)setPrefersStatusBarHidden:(BOOL)hidden {
    shouldHideStatusBar = hidden;

    //[self setNeedsStatusBarAppearanceUpdate];
    [UIView animateWithDuration:0.33 animations:^{ //this animates the event
        [self setNeedsStatusBarAppearanceUpdate];
    }];
}

вызовите его (в моем случае с помощью UISwitch)

[self setPrefersStatusBarHidden:NO];
person Community    schedule 01.05.2018