Quelle est la bonne façon de colorer la barre de navigation de UIImagePickerController?
J'ai simplement essayé de voir la couleur d’arrière-plan, mais j’obtiens une couleur fanée, comme le montre l’image ci-dessous; comme si une vue le gênait.
let picker = UIImagePickerController()
picker.sourceType = type
picker.mediaTypes = [kUTTypeImage]
picker.delegate = self
picker.navigationBar.backgroundColor = UIColor.redColor()
Il semble y avoir une vue obscurcissant le redColor ():
(lldb) po picker.navigationBar.subviews
2 values
{
[0] = 0x00007fe7bb52a890
[1] = 0x00007fe7bb52b670
}
Quelle est la bonne façon de créer une couleur unie pour la barre de navigation?
Mis à jour pour Swift 4.2
Pour être complet, je vais ajouter la configuration de personnalisation couleur:
let imagePicker = UIImagePickerController()
imagePicker.navigationBar.isTranslucent = false
imagePicker.navigationBar.barTintColor = .blue // Background color
imagePicker.navigationBar.tintColor = .white // Cancel button ~ any UITabBarButton items
imagePicker.navigationBar.titleTextAttributes = [
NSAttributedString.Key.foregroundColor: UIColor.white
] // Title color
qui se traduit par:
Essayer:
picker.navigationBar.translucent = false
picker.navigationBar.barTintColor = .redColor()
Au lieu de
picker.navigationBar.backgroundColor = UIColor.redColor()
Si vous voulez des effets translucides, laissez translucent = true
par défaut.
Voici le bon code de solution dans Objective-C. Pourrait être utile.
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]};
Swift = IOS 8 || 9
Il suffit de mettre cette méthode
func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool)
{
imagePicker.navigationBar.tintColor = .whiteColor()
imagePicker.navigationBar.titleTextAttributes = [
NSForegroundColorAttributeName : UIColor.whiteColor()
]
}
Pour Swift, IOS 8-10 Comme Rintaro l’a mentionné, je pense que le principal problème est de changer la propriété translucide par défaut du sélecteur navigationBar:
picker.navigationBar.translucent = false
Cela fera en sorte que la barre de navigation utilise l'apparence de UINavigationBar si vous définissez cela quelque part dans votre application.
Si vous avez besoin d'une autre couleur, vous pouvez utiliserpicker.navigationBar.barTintColor = UIColor.someColor
UIImagePickerController
est uneUINavigationController
. Ça peut être de la même manière que laUINavigationController
se coiffe.