Приложението ми има тъмен фон, но в iOS 7 лентата на състоянието стана прозрачна. Така че не мога да видя нищо там, само зеления индикатор за батерията в ъгъла. Как мога да променя цвета на текста в лентата на състоянието на бял, както е на началния екран?
Задайте UIViewControllerBasedStatusBarAppearance
на YES
във файла .plist.
В viewDidLoad
направете [self setNeedsStatusBarAppearanceUpdate];
Добавете следния метод:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
Забележка: Това не работи за контролери вътре в UINavigationController
, моля, вижте коментара на Tyson'по-долу :)
Swift 3 - Това ще работи с контролери вътре в UINavigationController
. Добавете този код вътре във вашия контролер.
// Preferred status bar style lightContent to use on dark background.
// Swift 3
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
Swift 5 и SwiftUI
За SwiftUI създайте нов файл swift, наречен HostingController.swift
.
import Foundation
import UIKit
import SwiftUI
class HostingController: UIHostingController<ContentView> {
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}
}
След това променете следните редове код в SceneDelegate.swift
window.rootViewController = UIHostingController(rootView: ContentView())
на
window.rootViewController = HostingController(rootView: ContentView())
Това е документирано в Ръководство за преход към iOS 7 UI, за което ви е необходим Apple Developer ID за директен достъп. Съответният откъс:
Тъй като лентата на състоянието е прозрачна, изгледът зад нея се вижда през нея. [...] Използвайте константата
UIStatusBarStyle
, за да укажете дали съдържанието на лентата на състоянието да бъде тъмно или светло:
UIStatusBarStyleDefault
показва тъмно съдържание. [...]
UIStatusBarStyleLightContent
показва светло съдържание. Използвайте, когато зад лентата на състоянието има тъмно съдържание.
Също така може да представлява интерес:
В iOS 7 можете да управлявате стила на лентата на състоянието от индивидуален веу контролер и да го променяте, докато приложението работи. За да изберете това поведение, добавете ключа
UIViewControllerBasedStatusBarAppearance
към файлаInfo.plist
на приложението и му задайте стойносттаYES
.
Определено бих ви препоръчал да разгледате документа, до който отново имате достъп с вашия Apple Developer ID.
Изглежда, че това е проблем с текущата версия на Xcode и iOS 7.
Част от свързаното с това съдържание на форумите за разработчици на Apple'е в търсене на UIStatusBarStyleLightContent в "iOS 7 Beta Livability" на форумите за разработчици на Apple* (в момента има 32 публикации).
Попаднах на него, опитвайки се да го настроя на версията light.
(Това е просто продължение на отговора на Aaron's.)