Скрыть строку состояния в IOS 9

Как скрыть строку состояния в IOS 9?

Теперь это устарело:

 [UIApplication sharedApplication] setStatusBarHidden:YES];

7 ответов

Решение

Свифта-3

 override var prefersStatusBarHidden: Bool {  
    return true  
}  

Я получил информацию отсюда

  • + Изменить func в var

  • удалять ()

  • + Изменить -> в :

Это работает, потому что вычисляемая переменная имеет функцию получения, поэтому функция, которую вы реализовывали раньше, просто превращается в функцию получения


2016 года: простая вещь, как

В вашем info.plist добавьте следующие два свойства для statusBar Hidden

Просмотр внешнего вида строки состояния на основе контроллера (логическое значение: НЕТ)

Строка состояния изначально скрыта (логическое значение: ДА)

По источнику

<key>UIStatusBarHidden</key>
<true/>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

или же

введите описание изображения здесь


Старые ответы! ...

  1. добавлять application.statusBarHidden в didFinishLaunchingWithOptions

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    application.statusBarHidden = YES;
    return YES;
    }
    

и добавить

  1. в info.plist Добавь это View controller-based status bar appearance задавать NO

    View controller-based status bar appearance = NO
    

скрытый набор на основе viewcontroller

Добавьте метод в вашем контроллере представления.

Цель -C

- (BOOL)prefersStatusBarHidden {
    return YES;
}

Быстро до 2

override func prefersStatusBarHidden() -> Bool {
return true
}

(ХОРОШО) 2016.5.17 в iOS 9.0 работала хорошо.

Обновленный ответ

  1. Перейти к файлу Info.plist
  2. Наведите указатель мыши на одну из этих строк, и появятся кнопки (+) и (-).
  3. Нажмите кнопку плюс, чтобы добавить новый ключ
  4. Введите начало с заглавной буквы V, и автоматически первым выбором будет " Просмотр внешнего вида строки состояния на основе контроллера". Добавьте это как КЛЮЧ.
  5. Установите ЗНАЧЕНИЕ на "НЕТ"
  6. Перейти к вам AppDelegate.m для Objective-C (для быстрого языка: AppDelegate.swift)
  7. Добавьте код внутри метода

Для Objective-C:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    [application setStatusBarHidden:YES];

    return YES;
}

Для Свифта:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject:AnyObject]?) -> Bool {
    application.statusBarHidden = true

    return true
}

В info.plist добавить следующие два свойства.

View controller-based status bar appearance (NO)

Status bar is initially hidden (YES)

Я знаю, что документация setStatusBarHidden: не упоминает о том, что использовать вместо этого. Но заголовок UIApplication делает.

// Setting statusBarHidden does nothing if your application is using the default UIViewController-based status bar system.
@property(readwrite, nonatomic,getter=isStatusBarHidden) BOOL statusBarHidden NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController prefersStatusBarHidden]");
- (void)setStatusBarHidden:(BOOL)hidden withAnimation:(UIStatusBarAnimation)animation NS_DEPRECATED_IOS(3_2, 9_0, "Use -[UIViewController prefersStatusBarHidden]");

Здесь указано, что вы должны использовать prefersStatusBarHidden на UIViewController и использовать стили панели состояния, основанные на контроллере представления.

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

- (BOOL)prefersStatusBarHidden {
   return YES;
}

Вот как вы легко можете вернуть контроль над статусной строкой для iOS 9+ и Swift 3+:

  1. добавлять View controller-based status bar appearance ключ с YES значение для Info.plist,
  2. Добавьте эту переменную в контроллер представления:

    private var isStatusBarHidden = false {
        didSet {
            setNeedsStatusBarAppearanceUpdate()
        }
    }
    
  3. Override prefersStatusBarHidden имущество:

    override var prefersStatusBarHidden: Bool {
        return isStatusBarHidden
    }
    

Вот и все. Теперь вы можете позвонить isStatusBarHidden = true а также isStatusBarHidden = false когда угодно.

Простым подходом было бы установить windowLevel приложения должно быть либо нормальным, либо статусбаром в зависимости от ваших потребностей, поэтому для начала

Objective-C

Чтобы скрыть строку состояния

 UIApplication.sharedApplication.keyWindow.windowLevel = UIWindowLevelStatusBar;

Показать строку состояния

 UIApplication.sharedApplication.keyWindow.windowLevel = UIWindowLevelNormal;

Также добавьте Key (Просмотреть внешний вид строки состояния на основе контроллера) с логическим значением NO.

Если по какой-то причине вам нужно View controller-based status bar appearance равно YES (например, чтобы строка состояния оставалась белой)

на AppDelegate's didFinishLaunchingWithOptions метод или где бы вы ни настраивали ваш navigationController:

yourNavigationController.navigationBar.barStyle = .black

затем используйте удивительный ответ alex-staravoitau и добавьте этот код, где бы вы ни скрывали строку состояния:

override var preferredStatusBarStyle: UIStatusBarStyle {
  return .lightContent
}

Я не уверен, что это правильный путь для достижения этого результата, но это сработало для меня, и я надеюсь, что это поможет кому-то еще:)

В большинстве iOS это будет работать. Я тестировал с iOS 10.

  1. Открыть info.plist
  2. "Просмотр внешнего вида строки состояния на основе контроллера" установлен на "НЕТ"
  3. "Строка состояния изначально скрыта" установлена ​​на ДА
  4. Готово
Другие вопросы по тегам