Как вы меняете/настраиваете панель навигации 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
}
Каков правильный способ создания сплошного цвета для панели навигации?
Ответы
Ответ 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
.