open example swift uiimagepickercontroller

swift - example - ¿Cómo colorea/personaliza la barra de navegación de UIImagePickerController?



uiimagepickercontroller swift 4 example (6)

UIImagePickerController es un UINavigationController . Puede tener el mismo estilo que el UINavigationController .

¿Cuál es la forma correcta de colorear la barra de navegación de UIImagePickerController?
Simplemente intenté ver el color de fondo, pero obtengo un color descolorido como se ve en la imagen de abajo; Como si algún punto de vista lo obstruyera.

let picker = UIImagePickerController() picker.sourceType = type picker.mediaTypes = [kUTTypeImage] picker.delegate = self picker.navigationBar.backgroundColor = UIColor.redColor()

Parece que tiene alguna vista que oculta el color rojo ():

(lldb) po picker.navigationBar.subviews 2 values { [0] = 0x00007fe7bb52a890 [1] = 0x00007fe7bb52b670 }

¿Cuál es la forma correcta de crear un color sólido para la barra de navegación?


Aquí el código de solución correcto en Objective-C. Podría ser útil.

imagePickerController.navigationBar.translucent = NO; imagePickerController.navigationBar.barTintColor = [UIColor colorWithRed:0.147 green:0.413 blue:0.737 alpha:1]; imagePickerController.navigationBar.tintColor = [UIColor whiteColor]; imagePickerController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName: [UIColor whiteColor]};


Para Swift, IOS 8-10 Como mencionó rintaro, creo que el problema principal aquí es cambiar la propiedad translúcida predeterminada de la barra de navegación del selector:

picker.navigationBar.translucent = false

Esto hará que la barra de navegación use la apariencia de la barra de UINavigation si configura esto en algún lugar de su aplicación.

Si necesitas otro color puedes usarlo.
picker.navigationBar.barTintColor = UIColor.someColor


Para completar, agregaré la configuración de personalización a todo color:

let imagePicker = UIImagePickerController() imagePicker.navigationBar.translucent = false imagePicker.navigationBar.barTintColor = .blueColor() // Background color imagePicker.navigationBar.tintColor = .whiteColor() // Cancel button ~ any UITabBarButton items imagePicker.navigationBar.titleTextAttributes = [ NSForegroundColorAttributeName : UIColor.whiteColor() ] // Title color

lo que resulta en:


Tratar:

picker.navigationBar.translucent = false picker.navigationBar.barTintColor = .redColor()

En lugar de

picker.navigationBar.backgroundColor = UIColor.redColor()

Si desea efectos translúcidos, deje translucent = true como predeterminado.


Swift = IOS 8 || 9

Solo pon este método

func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool) { imagePicker.navigationBar.tintColor = .whiteColor() imagePicker.navigationBar.titleTextAttributes = [ NSForegroundColorAttributeName : UIColor.whiteColor() ] }