web-dev-qa-db-ja.com

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
}

ナビゲーションバーの単色を作成する正しい方法は何ですか?

26

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

その結果:

enter image description here

54
Michal

試してください:

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

の代わりに

picker.navigationBar.backgroundColor = UIColor.redColor()

半透明の効果が必要な場合は、translucent = trueデフォルトとして。

20
rintaro

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

Swift = IOS 8 || 9

このメソッドを置くだけ

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

}
8
Mitul Marsoniya

Swiftの場合、IOS 8-10 rintaroが述べたように、ここでの主な問題はピッカーのnavigationBarのデフォルトの半透明プロパティを変更することだと思います:

picker.navigationBar.translucent = false

これにより、アプリのどこかにこれを設定した場合、ナビゲーションバーでUINavigationBarの外観が使用されます。

あなたが使用できる別の色が必要な場合
picker.navigationBar.barTintColor = UIColor.someColor

2
Boaz Frenkel

UIImagePickerControllerUINavigationControllerです。 UINavigationControllerのスタイルと同じ方法でスタイルを設定できます。

0
hasan