Xibを使用してナビゲーションバーボタンを作成していますが、画像をバーボタンに設定すると、画像の色が元の画像と異なります。
これが私の元の画像です。
そして、ナビゲーションバーのボタンアイテムにその画像を追加すると、次のようになります
まず、@ Desdenovaのコメントに同意します。
2つの画像は同じように見えず、1つは各ラインにハード直角エッジを持ち、もう1つは丸みを帯びています。
正しい画像ファイルを使用していることを確認してください。
これが当てはまる場合、xib
実装から逸脱することなく、驚くべき問題が解決されています。そうでない場合は、プログラムで実行してください(@shankarsコードに従って)。
しかし、注意すべきもう1つのことは、ボタンにカスタム画像ファイルを設定する際に問題が発生したことです。ボタンに画像を設定するときは、必ずUIImageRenderingModeAlwaysOriginal
を使用してください。
目的C:
[button setImage:[[UIImage imageNamed:@"imageName.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];
スイフト:
someBarButtonItem.image = UIImage(named: "yourPictureName")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
Swift 3:
someBarButtonItem.image = UIImage(named:"myImage")?.withRenderingMode(.alwaysOriginal)
これはサンプル作業コードです
UIImage *myImage = [UIImage imageNamed:@"myImageFile.png"];
myImage = [myImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *menuButton = [[UIBarButtonItem alloc] initWithImage:myImage style:UIBarButtonItemStylePlain target:self action:@selector(menuObject:)];
self.navigationItem.leftBarButtonItem = menuButton;
Ios7ストーリーボードには以下のような修正が必要な問題があるためです。色合いの色を画像の色として設定します
ダイレクトストーリーボードの代わりにプログラムでナビゲーションバーボタンを作成できます。これは元の画像の色には影響しません
self.navigationItem.leftBarButtonItem=[self backButton];
- (UIBarButtonItem *)backButton
{
UIImage *image = [UIImage imageNamed:@"image.png"];
CGRect buttonFrame = CGRectMake(0, 0, image.size.width, image.size.height);
UIButton *button = [[UIButton alloc] initWithFrame:buttonFrame];
//[button addTarget:self action:@selector(backButtonPressed) forControlEvents:UIControlEventTouchUpInside];
[button setImage:image forState:UIControlStateNormal];
UIBarButtonItem *item= [[UIBarButtonItem alloc] initWithCustomView:button];
return item;
}
色合いも設定する必要があります-私にとってはうまくいきました-次のようにコードを介してUIBarButtonItemを生成できます:
#define setTurqoiseColor [UIColor colorWithRed:68.0f/255.0f green:181.0f/255.0f blue:223.0f/255.0f alpha:1.0]
UIBarButtonItem *menuButton = [[UIBarButtonItem alloc] initWithImage:buttonImage style:UIBarButtonItemStyleBordered target:self action:@selector(toggleMenu)];
menuButton.tintColor = setTurqoiseColor;