Подтвердить что ты не робот

Как вы меняете/настраиваете панель навигации UIImagePickerController?

Каков правильный способ окраски навигационной панели UIImagePickerController?
Я просто пытался увидеть цвет фона, но я получаю выцветший цвет, как показано на изображении ниже; как будто какое-то представление препятствует ему.

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

enter image description here

Кажется, что есть некоторый вид, скрывающий redColor():

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

Каков правильный способ создания сплошного цвета для панели навигации?

4b9b3361

Ответ 1

Для полноты я добавлю настройку полной настройки цвета:

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

что приводит к:

введите описание изображения здесь

Ответ 2

Try:

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

Вместо

picker.navigationBar.backgroundColor = UIColor.redColor()

Если вы хотите получить полупрозрачные эффекты, оставьте translucent = true по умолчанию.

Ответ 3

Здесь правильный код решения в Objective-C. Может быть полезно.

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

Ответ 4

Swift = IOS 8 || 9

Просто поставьте этот метод

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

}

Ответ 5

Для Swift IOS 8-10 Как упоминал rintaro, я думаю, что главная проблема здесь заключается в изменении значения прозрачности по умолчанию для панели навигации:

picker.navigationBar.translucent = false

Это приведет к тому, что панель навигации будет использовать внешний вид UINavigationBar, если вы установите ее где-нибудь в своем приложении.

Если вам нужен другой цвет, вы можете использовать picker.navigationBar.barTintColor = UIColor.someColor

Ответ 6

UIImagePickerController является UINavigationController. Может быть стилизованные так же, как стиль UINavigationController.