UIBarButtonItemに表示したい画像がありますが、何らかの理由でその輪郭のみが表示され、残りはすべて白です。実際に画像を表示するにはどうすればよいですか?
ありがとう!
UIBarButtonItemに表示したい画像がありますが、何らかの理由でその輪郭のみが表示され、残りはすべて白です。実際に画像を表示するにはどうすればよいですか?
ありがとう!
他のiOS7+ソリューションがあります:
NSString *iconFilename = // ...
UIImage *image =
[[UIImage imageNamed:iconFilename]
imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *barButtonItem =
[[UIBarButtonItem alloc] initWithImage:image
style:UIBarButtonItemStylePlain
target:self
action:@selector(onBarButtonItemTapped:)];
スウィフト5:
let iconFilename: String = // ...
let image = UIImage(named: iconFilename)?.withRenderingMode(.alwaysOriginal)
let barButtonItem = UIBarButtonItem(image: image,
style: .plain,
target: self,
action: #selector(onBarButtonItemTapped(_:)))
UIImage.hからの抽出:
...ナビゲーションバー、タブバー、ツールバー、およびセグメント化されたコントロールは、前景画像をテンプレートとして自動的に処理します... UIImageRenderingModeAlwaysTemplateを使用して、画像を常にテンプレートとしてレンダリングするか、UIImageRenderingModeAlwaysOriginalを使用して、画像を常に次のようにレンダリングすることができます。オリジナル。
更新: iOS 7以降で利用可能な、より簡単な解決策については、MANIAK_dobriiの回答を参照してください。
UIBarButtonItemの画像の使用方法は次のとおりです。
UIImage *image = [UIImage imageNamed:@"buttonImage.png"];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.bounds = CGRectMake( 0, 0, image.size.width, image.size.height );
[button setImage:image forState:UIControlStateNormal];
[button addTarget:myTarget action:@selector(myAction) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
…
コーディングをまったく含まない別の方法があります。
まず、バーに配置する画像をAssets.xcassetsドキュメントに配置します。
アセットブラウザで画像を選択します。
右側の垂直ツールバーで、その画像の属性インスペクターを開きます。
「レンダリング」で「元の画像」を選択します。
ストーリーボードではボタンは引き続き色合いでペイントされますが、シミュレーターで実行すると元の画像が表示されます。
画像のデフォルトのレンダリングモードは、UIコントロールごとに異なります。ただし、属性インスペクターでこのパラメーターを設定すると、画像が常に特定のレンダリングモードで表示されるように強制できます。
同じ画像を異なるコントローラーで異なるレンダリングモードで表現する必要がある場合は、MANIAK_dobriiからの応答がより適切です。
Swift 3:
let iconname = // ...
let image = UIImage(named: iconname)?.withRenderingMode(.alwaysOriginal)
let barButtonItem = UIBarButtonItem(image: image, style: .plain, target: self, action: #selector(self. onBarButtonItemTapped))
self.navigationItem.leftBarButtonItem = barButtonItem
いいえ。ヒューマンインターフェイスガイドラインで読むことができるように
アイコンの外観を決定したら、次のガイドラインに従ってアイコンを作成します。
PNG形式を使用します。適切なアルファを備えた純白を使用してください。ドロップシャドウを含めないでください。アンチエイリアシングを使用します。斜角を追加する場合は、それが90°であることを確認してください(これを支援するために、アイコンの上部に配置された光源を想像してください)。ツールバーとナビゲーションバーのアイコンの場合、約20x20ピクセルのアイコンを作成します。タブバーアイコンの場合、約30x30ピクセルのアイコンを作成します。
注:ツールバー、ナビゲーションバー、およびタブバーに指定するアイコンは、アプリケーションに表示されるアイコンを作成するためのマスクとして使用されます。フルカラーのアイコンを作成する必要はありません。