アイコンinfo.pngが青色のままで、その画像の元の色が付いていないのはなぜですか?以下のコードを使用しています。
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"info.png"]
style:UIBarButtonItemStylePlain
target:self
action:@selector(info:)];
デフォルトでは、UINavigationBarのバーボタン項目の画像は、テンプレートモードを使用してレンダリングされます。オリジナルに設定できます。
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[[UIImage imageNamed:@"info.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]
style:UIBarButtonItemStylePlain
target:self
action:@selector(info:)];
スウィフト3:
let image : UIImage? = UIImage.init(named: "heart.png")!.withRenderingMode(.alwaysOriginal)
アセットからもできます。 Assets.xcassetsに移動>>バーボタンアイテムの画像として使用されている画像を選択します。右側のパネルで属性インスペクターをタップします。元の画像に対してレンダリングを選択します。以前はデフォルトになります。カラー画像が表示されます。
Swift 2.1+の場合、次のようになります。
let image : UIImage? = UIImage(named:"myImage.png")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
または単に
let image : UIImage? = UIImage(named:"myImage.png")!.imageWithRenderingMode(.AlwaysOriginal)
スウィフト4:
let image = UIImage(named: "imageName")?.withRenderingMode(.alwaysOriginal)
navigationItem.leftBarButtonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(leftBarButtonPressed))
アプリのbarButtonItemsの色は、アプリケーションのウィンドウのtintColorプロパティに関連しているためです。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window.tintColor = [UIColor redColor];
return YES;
}
わかりました、最初に画像を元の状態に設定しました。
UIImage *image = [[UIImage imageNamed:@"info.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithImage:image
style:UIBarButtonItemStylePlain
target:self
action:@selector(info:)];
ストーリーボードからバーボタンアイテムのティントカラーを変更します。または、ストーリーボードの画像の色。
色は、hexまたはrgbとして期待される色である必要があります。