UIImagePickerControllerのナビゲーションバーに色を付ける正しい方法は何ですか?
背景色を確認しようとしただけですが、下の画像のように色が薄くなっています。一部のビューがそれを妨げているかのように。
let picker = UIImagePickerController()
picker.sourceType = type
picker.mediaTypes = [kUTTypeImage]
picker.delegate = self
picker.navigationBar.backgroundColor = UIColor.redColor()
RedColor()を覆い隠すいくつかのビューがあるようです:
(lldb) po picker.navigationBar.subviews
2 values
{
[0] = 0x00007fe7bb52a890
[1] = 0x00007fe7bb52b670
}
ナビゲーションバーの単色を作成する正しい方法は何ですか?
Swift 4.2の更新
完全を期すために、フルカラーのカスタマイズ設定を追加します。
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
その結果:
試してください:
picker.navigationBar.translucent = false
picker.navigationBar.barTintColor = .redColor()
の代わりに
picker.navigationBar.backgroundColor = UIColor.redColor()
半透明の効果が必要な場合は、translucent = true
デフォルトとして。
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]};
Swift = IOS 8 || 9
このメソッドを置くだけ
func navigationController(navigationController: UINavigationController, willShowViewController viewController: UIViewController, animated: Bool)
{
imagePicker.navigationBar.tintColor = .whiteColor()
imagePicker.navigationBar.titleTextAttributes = [
NSForegroundColorAttributeName : UIColor.whiteColor()
]
}
Swiftの場合、IOS 8-10 rintaroが述べたように、ここでの主な問題はピッカーのnavigationBarのデフォルトの半透明プロパティを変更することだと思います:
picker.navigationBar.translucent = false
これにより、アプリのどこかにこれを設定した場合、ナビゲーションバーでUINavigationBarの外観が使用されます。
あなたが使用できる別の色が必要な場合picker.navigationBar.barTintColor = UIColor.someColor
UIImagePickerController
はUINavigationController
です。UINavigationController
のスタイルと同じ方法でスタイルを設定できます。