Зміна кольору тексту рядка стану в екрані заставки iOS 7


98

Я знаю, що вже є декілька питань stackoverflow, які говорять, як змінити рядок стану для всіх контролерів перегляду. Зараз я змінюю колір рядка стану таким чином:

if(IS_IOS7)
    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

В application:DidFinishLaunching

Крім того, я змінив значення UIViewControllerBasedStatusBarAppearanceв плісті на NO. Однак на екрані екрана все ще відображається текст рядка стану з чорним кольором.

Чи можливо змінити колір тексту рядка стану на екрані заставки ?


Що ви маєте на увазі "у ньому все ще відображається смужка стану з чорним кольором": Якщо ваш код працює, шрифт рядка стану повинен бути білим, колір тла рядка стану залежить від вашого зображення сплеску (який тепер повинен включати висоту рядка стану - 20 пікселів)
Вінцз

Вибачте, я дуже пропустив текстове слово. Я змінюю лише колір тексту в рядку стану. Я можу змінити його після появи екрана заставки, але я не можу його змінити, коли відбувається екран сплеску.
Тіаго Алмейда

Відповіді:


224

У файл списку проекту додайте властивість "Стиль рядка стану" (ключ є UIStatusBarStyle). Потім ігноруйте всі можливі значення, перелічені у випадаючому меню для цього властивості, та введіть UIStatusBarStyleLightContentнатомість.

І ви не повинні встановити , UIViewControllerBasedStatusBarAppearanceщоб NOв вашому PLIST, ви можете встановити preferredStatusBarStyleви хочете контролери перегляду.


Чи є спосіб зробити це сумісним із тонованою смужкою стану на iOS 6?
Рафаель Нобре

1
Колір тексту рядка стану - або білий, або чорний. Фон панелі походить від вашого стартового зображення, а потім із перегляду viewController, якщо він поширюється нижче рядків.
Vinzzz

1
Після TONS різних методів цей FINALLY працював (для UIViewControllerBasedStatusBarAppearance встановлено значення NO). Ти герой.
Тамас Сенгель

Ви також можете зробити це за допомогою коду UIApplication.sharedApplication (). statusBarStyle = .LightContent. Я роблю це в AppDelegate
Ясмін Тьомкін

@Yasmin: змінити колір ПІСЛЯ екрана сплеску, це рішення вже було частиною питання;)
Vinzzz

33

Це можна зробити, не вводячи жодного рядка коду.
Виконайте наступне, щоб зробити текст рядка стану кольором білим у всьому додатку

На вашому проекті пліст- файл:

  • Стиль рядка стану: UIStatusBarStyleLightContent
  • Перегляд зовнішнього вигляду рядка стану на основі контролера: NO
  • Рядок стану спочатку приховано: NO

Прийнята відповідь хороша, але вона не спрацювала на всіх моїх контролерах перегляду, не виконуючи 2-ю кулю вище. Дякую!
Кліфтон Лабрум

"Перегляд зовнішнього вигляду рядка стану на основі контролера: YES" все ще здається, що це робиться трюк (iOS 9)
Ніколас Міарі

19

Ви можете виконати такі дії, щоб отримати смугу стану світлого кольору у всій програмі.

  1. Виберіть назву проекту в навігаторі проекту.
  2. Виберіть ім'я цілі зі списку в лівій колонці редактора проекту.
  3. Клацніть Загальне вгорі редактора проектів.
  4. Встановіть стиль рядка стану -> Світло

У свій список плістів додайте такі значення:

  1. Стиль рядка стану - UIStatusBarStyleLightContent
  2. Перегляд зовнішнього вигляду рядка стану на основі контролера - НІ

Це допоможе вам отримати смугу стану у БІЛОМУ кольорі впродовж усієї програми, включаючи SPLASH SCREEN.


7

В списку встановіть значення " UIViewControllerBasedStatusBarAppearanceНі"

Потім додайте наступний код у варіанті завершення запуску

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {

   [application setStatusBarStyle:UIStatusBarStyleLightContent];

    self.window.clipsToBounds =YES;

    self.window.frame =  CGRectMake(0,20,self.window.frame.size.width,self.window.frame.size.height-20);
}

Дотримуйтесь цього коду, він працював на мене


це відображається білий текст у рядку стану, тоді як мій фон також світлий. як я можу показати чорний текст
Mangesh

Mangesh on the Target перейдіть до загальних налаштувань, там у вас буде можливість встановити стиль рядка стану
Preejith augustine

Ви могли насправді записати цей перший рядок трохи простіше, використовуючи синтаксис крапки, як це: if (UIDevice.currentDevice.systemVersion.floatValue >= 7) {
Тодд Леман

2

Ось рекомендації Apple / Інструкція щодо зміни рядка стану.

Ось - Як змінити стиль рядка стану:

Якщо ви хочете , щоб стиль набору статусу бару, рівень додатків , а потім встановити UIViewControllerBasedStatusBarAppearanceв NOвашій .plist »файла`.

якщо ви хочете встановити стиль рядка стану, на рівні контролера перегляду виконайте наступні дії:

  1. Встановіть UIViewControllerBasedStatusBarAppearanceв YESв .plistфайлі, якщо вам необхідно встановити стиль статус бар тільки на рівні UIViewController.
  2. У функції viewDidLoad add - setNeedsStatusBarAppearanceUpdate

  3. змінити перевагуStatusBarStyle у контролері перегляду.

-

override func viewDidLoad() {
    super.viewDidLoad()
    self.setNeedsStatusBarAppearanceUpdate()
}

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .lightContent
}

Встановіть значення .plist відповідно до рівня налаштування стилю рядка стану. введіть тут опис зображення


Ви можете встановити колір тла для рядка стану під час запуску програми або під час viewDidLoad контролера перегляду.

extension UIApplication {

    var statusBarView: UIView? {
        return value(forKey: "statusBar") as? UIView
    }

}

// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
        return true
    }
}


or 
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
    }

}



Ось результат:

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


1

Ви можете виконати такі дії, щоб отримати смугу стану світлого кольору у всій програмі.

Виберіть назву проекту в навігаторі проекту. Виберіть ім'я цілі зі списку в лівій колонці редактора проекту. Клацніть Загальне вгорі редактора проектів. Встановіть стиль рядка стану -> Світло

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.