swift - example - ¿Cómo colorea/personaliza la barra de navegación de UIImagePickerController?
uiimagepickercontroller swift 4 example (6)
UIImagePickerController
es unUINavigationController
. Puede tener el mismo estilo que elUINavigationController
.
¿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()
]
}