web-dev-qa-db-fra.com

Comment coloriez-vous/personnalisez-vous la barre de navigation UIImagePickerController?

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()

enter image description here

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?

25
Frederick C. Lee

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:

 enter image description here

51
Michal

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.

20
rintaro

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]};
9
WalterDa

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()
     ]

}
8
Mitul Marsoniya

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 utiliser
picker.navigationBar.barTintColor = UIColor.someColor 

2
Boaz Frenkel

UIImagePickerController est une UINavigationController. Ça peut être de la même manière que la UINavigationController se coiffe.

0
hasan