titletextattributes color bar ios swift swift3 statusbar uistatusbar

ios - bar - uinavigationitem title color



Cambiar el color de fondo de la barra de estado en Swift 3 (11)

Agregue el siguiente código en su archivo de extensión para editar su barra de estado en Swift 4 y superior:

let frame = screenController.view.convert(UIApplication.shared.statusBarFrame, to: screenController.view) let backview = UIView(frame: frame) backview.backgroundColor = backgroundColor screenController.view.addSubview(backview) screenController.view.bringSubviewToFront(backview)

ahora, podemos editar la barra de estado agregando la siguiente línea en nuestra clase ViewController:

extension UIApplication { var statusBarView: UIView? { if responds(to: Selector(("statusBar"))) { return value(forKey: "statusBar") as? UIView } return nil } }

Esperamos que esto sea útil. Gracias

En XCode 7.3.x, he cambiado el color de fondo de mi StatusBar con:

func setStatusBarBackgroundColor(color: UIColor) { guard let statusBar = UIApplication.sharedApplication().valueForKey("statusBarWindow")?.valueForKey("statusBar") as? UIView else { return } statusBar.backgroundColor = color }

Pero parece que esto ya no funciona con Swift 3.0.

Lo intentaré con:

func setStatusBarBackgroundColor(color: UIColor) { guard let statusBar = (UIApplication.shared.value(forKey: "statusBarWindow") as AnyObject).value(forKey: "statusBar") as? UIView else { return } statusBar.backgroundColor = color }

Pero me da:

this class is not key value coding-compliant for the key statusBar.

¿Alguna idea de cómo cambiarlo con XCode8 / Swift 3.0?


Color de fondo de la barra de estado "Cambiar":

let statusBarView = UIView(frame: UIApplication.shared.statusBarFrame) let statusBarColor = UIColor(red: 32/255, green: 149/255, blue: 215/255, alpha: 1.0) statusBarView.backgroundColor = statusBarColor view.addSubview(statusBarView)

Cambiar el color del texto de la barra de estado:

override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }

Actualización: tenga en cuenta que el marco de la barra de estado cambiará cuando se gire la vista. Puede actualizar el marco de subvista creado por:

  • Usando la máscara de autoresizing: statusBarView.autoresizingMask = [.flexibleWidth, .flexibleTopMargin]
  • Observando NSNotification.Name.UIApplicationWillChangeStatusBarOrientation
  • O anulando viewWillLayoutSubviews()

Con el uso de Swift 3 y 4 , puede usar el fragmento de código a continuación. Encuentra la vista desde la aplicación UIApplication usando valueForKeyPath como establece su color de fondo.

guard let statusBarView = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView else { return } statusBarView.backgroundColor = UIColor.red

C objetivo

UIView *statusBarView = [UIApplication.sharedApplication valueForKeyPath:@"statusBarWindow.statusBar"]; if (statusBarView != nil) { statusBarView.backgroundColor = [UIColor redColor]; }


Hice esta extensión para cambiar el color de la barra de estado. No depende de la clave. Por lo tanto, es mucho más seguro usar

UIApplication.shared.statusBarView?.backgroundColor = <Your Color name> ex: UIApplication.shared.statusBarView?.backgroundColor = .red

Aquí está el uso en cualquier lugar en viewcontroller:

setStatusBar(color: .red)


La posible solución es agregar una vista que se usará como fondo de statusBar en su viewController:

if #available(iOS 13.0, *) { let navBarAppearance = UINavigationBarAppearance() navBarAppearance.configureWithOpaqueBackground() navBarAppearance.titleTextAttributes = [.foregroundColor: UIColor.white] navBarAppearance.largeTitleTextAttributes = [.foregroundColor: UIColor.white] navBarAppearance.backgroundColor = UIColor.Theme.primary navigationBar.standardAppearance = navBarAppearance navigationBar.scrollEdgeAppearance = navBarAppearance }


Para iOS 11 y Xcode 9, siga los siguientes pasos.

  1. cree una extensión a la clase UIApplication :

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

  2. En su clase o donde quiera cambiar el color de fondo de la barra de estado:

    UIApplication.shared.statusBarView?.backgroundColor = .red

  3. Para el contenido claro o oscuro de la barra de estado, simplemente vaya a Info.plist y agregue la siguiente fila de valor con el valor NO .

Ver la apariencia de la barra de estado basada en el controlador

  1. Ahora solo configure el contenido ligero o lo que necesite en la pestaña General de la configuración de su proyecto .

Puede establecer el color de fondo para la barra de estado durante el inicio de la aplicación o durante viewDidLoad de su controlador de vista.

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 } }



Aquí está el resultado:


Para Xcode 9 e iOS 11: el estilo de la barra de estado que intentaremos lograr es una barra de estado con contenido blanco. Vaya al archivo ViewController.swift y agregue las siguientes líneas de código.

override var preferredStatusBarStyle: UIStatusBarStyle { return .lightContent }

O desde la opción de configuración del proyecto puede cambiar el estilo de la barra de estado:

A continuación, regrese al Guión gráfico, seleccione el Controlador de vista y, en el menú Editor, seleccione Incrustar en el controlador de navegación. Seleccione la barra de navegación y en el Inspector de atributos configure el color del Tinte de la barra en rojo. El Storyboard se verá así.

Compila y ejecuta el proyecto. El contenido de la barra de estado vuelve a estar oscuro, que es el valor predeterminado. La razón de esto es que iOS solicitó el estilo de la barra de estado del controlador de navegación en lugar del controlador de vista contenido.

Para cambiar el estilo de todos los controladores de navegación dentro de la aplicación, cambie el siguiente método en el archivo AppDelegate.swift.

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. UINavigationBar.appearance().barStyle = .blackOpaque return true }

Compila y ejecuta el proyecto nuevamente, esta vez el contenido de la barra de estado cambió a blanco.


Prueba esto

Vaya a su aplicación info.plist

  1. Establezca Ver la apariencia de la barra de estado basada en el controlador en NO
  2. Establecer el estilo de la barra de estado en UIStatusBarStyleLightContent

Luego, vaya a su aplicación delegue y pegue el siguiente código donde configure su RootViewController de Windows.

#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending) if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"7.0")) { UIView *view=[[UIView alloc] initWithFrame:CGRectMake(0, 0,[UIScreen mainScreen].bounds.size.width, 20)]; view.backgroundColor=[UIColor blackColor]; [self.window.rootViewController.view addSubview:view]; }


extension UIApplication { var statusBarView: UIView? { if responds(to: Selector("statusBar")) { return value(forKey: "statusBar") as? UIView } return nil } } UIApplication.shared.statusBarView?.backgroundColor = .red


func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any] ?) -> Bool { // Override point for customization after application launch. UINavigationBar.appearance().barStyle = .blackOpaque return true }

Esto funciona para mí, ya que mi barra de navegación TintColor era negra y no podía ver la barra de estado.

Cuando se estableció el código anterior, la barra de estado de FinishLaunch aparece en blanco.