Есть ли способ предотвратить UIImagePickerController изменить стиль строки состояния? - PullRequest
15 голосов
/ 06 июня 2010

UIImagePickerController меняет стиль строки состояния на черный / непрозрачный. Я хочу сохранить стиль строки состояния черным / полупрозрачным. Я нахожу способ предотвратить изменение стиля строки состояния. Или сделать это прошло гладко. Теперь представление UIImagePickerController мгновенно меняет стиль строки состояния, даже - указан [presentModalViewController: picker animated: YES].

Любой метод, добро пожаловать, включая взлом или приватный метод. Это приложение для AppStore, но я хочу даже попробовать.

Ответы [ 4 ]

39 голосов
/ 07 февраля 2012

Я хотел, чтобы строка состояния оставалась черной непрозрачной при отображении средства выбора библиотеки фотографий (средство выбора фотографий изменяет его на черный полупрозрачный), и это решило проблему для меня.

Установить UIImagePickerDelegate:

libraryUI.delegate = self;

Реализация следующего обратного вызова:

- (void)navigationController:(UINavigationController *)navigationController 
      willShowViewController:(UIViewController *)viewController 
                    animated:(BOOL)animated {

    if ([navigationController isKindOfClass:[UIImagePickerController class]] && 
        ((UIImagePickerController *)navigationController).sourceType == UIImagePickerControllerSourceTypePhotoLibrary) {
        [[UIApplication sharedApplication] setStatusBarHidden:NO];
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque animated:NO];
    }
}

Здесь вы можете указать любой тип стиля строки состояния. В вашем случае вам, вероятно, придется удалить проверку sourceType и указать UIStatusBarStyleBlackTranslucent.

1 голос
/ 14 ноября 2014

Попробуйте это прекрасно работает на ios 8

-(void)navigationController:(UINavigationController *)navigationController
      willShowViewController:(UIViewController *)viewController
                    animated:(BOOL)animated
{
    [[[viewController navigationController] navigationBar] setBarStyle:UIBarStyleBlack];
}
0 голосов
/ 04 марта 2014

Я нашел более легкий подход для меня. Просто сделай

[[UIApplication sharedApplication] setStatusBarHidden:YES];
[self.delegate setNeedsStatusBarAppearanceUpdate];

и строка состояния скрыта (измените код, если хотите, чтобы он был виден). Должны быть вызваны после выбора изображения из UIImagePickerController.

0 голосов
/ 06 июня 2010

Если вы хотите полностью отключить изменение стиля строки состояния, вы можете добавить категорию UIApplication, которая блокирует ее.

@implementation UIApplication (MyCategory)
- (void)setStatusBarStyle:(UIStatusBarStyle)statusBarStyle {}
@end

Если это работает, но вы хотите выборочно отключить изменения, попробуйте создать подкласс UIApplication,Вы можете позвонить в Super, если хотите передать изменения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...