Как скрыть строку состояния с анимацией в iOS 7? - программирование
Подтвердить что ты не робот

Как скрыть строку состояния с анимацией в iOS 7?

Так как iOS 7 выкатился, я не могу показать или скрыть строку состояния с анимацией, как в iOS 6. На данный момент я использую NSTimer для управления им, когда спрятаться.

вот мой код:

- (void)hideStatusBar{
    _isStatusBarHidden=YES;
    [self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}
- (void)showStatusBar{
_isStatusBarHidden=NO;
[self performSelector:@selector(setNeedsStatusBarAppearanceUpdate)];
}
    //===================
 _controlVisibilityTimer = [[NSTimer scheduledTimerWithTimeInterval:4 target:self selector:@selector(hideStatusBar:) userInfo:nil repeats:NO] retain];

Но, к сожалению, способ скрытия строки состояния кажется немного грубым, не угасающим. Есть ли у кого-то решение?

Update

Я решил проблему скрытия, используя решение @hahaha. Мне просто нужно, чтобы представление являлось фоном строки состояния, вот мой код.

AppDelegate* appDelegate = (AppDelegate*)[[UIApplication sharedApplication]delegate];

self.StatusBarOrange = [[UIView alloc] initWithFrame:CGRectMake(0, 0, appDelegate.window.frame.size.width, 20)];    
[self.StatusBarOrange setBackgroundColor:[UIColor orangeColor]];
[appDelegate.window.rootViewController.view addSubview:self.StatusBarOrange];

и теперь все работает отлично!

4b9b3361

Ответ 1

Вам нужно позвонить

[UIViewController setNeedsStatusBarAppearanceUpdate];

из блока анимации, как в следующем примере:

@implementation SomeViewController {
    BOOL _statusBarHidden;
}

- (BOOL)prefersStatusBarHidden {
    return _statusBarHidden;
}

- (void)showStatusBar:(BOOL)show {
 [UIView animateWithDuration:0.3 animations:^{
        _statusBarHidden = !show;
        [self setNeedsStatusBarAppearanceUpdate];
    }];
}

@end