webentwicklung-frage-antwort-db.com.de

Wie können Sie die UIImagePickerController-Navigationsleiste farbig gestalten/anpassen?

Wie wird die Navigationsleiste des UIImagePickerControllers richtig eingefärbt?
Ich habe nur versucht, die Hintergrundfarbe zu sehen, aber ich bekomme eine verblasste Farbe, wie im Bild unten zu sehen ist. als ob irgendeine Sicht es versperrt.

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

enter image description here

Es scheint eine Sicht zu haben, die die redColor () verdeckt:

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

Was ist der richtige Weg, um eine durchgehende Farbe für die Navigationsleiste zu erstellen?

25

Aktualisiert für Swift 4.2

Der Vollständigkeit halber füge ich ein Farbanpassungs-Setup hinzu:

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

was in ... resultiert:

 enter image description here

51
Michal

Versuchen:

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

Anstatt

picker.navigationBar.backgroundColor = UIColor.redColor()

Wenn Sie transluzente Effekte wünschen, lassen Sie translucent = true als Standardeinstellung.

20
rintaro

Hier der richtige Lösungscode in Objective-C. Könnte nützlich sein.

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

Setzen Sie einfach diese Methode 

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

}
8
Mitul Marsoniya

Für Swift, IOS 8-10 Wie bereits erwähnt, ist das Hauptproblem hier die Änderung der standardmäßigen durchscheinenden Eigenschaft der Picker-Navigationsleiste:

picker.navigationBar.translucent = false

Dies bewirkt, dass die Navigationsleiste das Erscheinungsbild der UINavigationBar verwendet, wenn Sie dies irgendwo in Ihrer App festlegen. 

Wenn Sie eine andere Farbe benötigen, können Sie verwenden
picker.navigationBar.barTintColor = UIColor.someColor 

2
Boaz Frenkel

UIImagePickerController ist eine UINavigationController. Es kann sein so gestaltet wie die Variable UINavigationController.

0
hasan