UIBarButtonItemを初期化しようとする画像が何であれ、画像のサイズで白い背景が表示されます。Interface Builderに飽きても、結果は同じです。これらの画像はすべて、他のオブジェクトと一緒に使用すると完全に機能します。
どうすればこれを解決できますか?
UIBarButtonItemを初期化しようとする画像が何であれ、画像のサイズで白い背景が表示されます。Interface Builderに飽きても、結果は同じです。これらの画像はすべて、他のオブジェクトと一緒に使用すると完全に機能します。
どうすればこれを解決できますか?
バーボタン画像の作成には、画像のアルファ値のみが使用されます。提供する画像はすべて、アルファ値に基づいて白の色合いの画像に変換されます。
したがって、画像が完全に白であることを考えると、透明性がないことは明らかです。
ガイドラインには次のように書かれています。
- PNG形式を使用します。
- 適切なアルファを備えた純白を使用してください。
- ドロップシャドウを含めないでください。
- アンチエイリアシングを使用します。
- 斜角を追加する場合は、それが90°であることを確認してください(これを支援するために、アイコンの上部に配置された光源を想像してください)。
- ツールバーとナビゲーションバーのアイコンの場合、約20x20ピクセルのアイコンを作成します。
- タブバーアイコンの場合、約30x30ピクセルのアイコンを作成します。
注:ツールバー、ナビゲーションバー、およびタブバーに指定するアイコンは、アプリケーションに表示されるアイコンを作成するためのマスクとして使用されます。フルカラーのアイコンを作成する必要はありません。
ただし、この質問が示すように、カスタムビューを使用してフルカラー画像を取得できます。
色付きの画像でUIBarButtonItemを使用できますか?
ただし、これは少し上にあります。ガイドラインに固執し、適切にフォーマットされた画像の通常のボタンを使用するのが最善です。
iOS 7以降では、これが役立ちます
UIImage *image = [[UIImage imageNamed:@"myImage.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(YOUR_METHOD:)];
Swift 3で、次のことが機能することがわかりました。ここでは、複数のbarButtonItemの配列として示されています。
let barButtonItem1 = UIBarButtonItem( image: UIImage(named: "myImage")?.withRenderingMode(.alwaysOriginal) , style: .plain ,target: self, action: #selector(yourAction))
let barButtonItem2 = UIBarButtonItem(image: UIImage(named: "myImage")?.withRenderingMode(.alwaysOriginal) , style: .plain, target: self, action: #selector(yourAction))
navigationItem.rightBarButtonItems = [barButtonItem1, barButtonItem2]
これは、rightHandSideにx2barButtonsを示しています。左を表示するには、単にに変更します
NavigationItem.leftBarButtonItem = [barButtonItem1、barButtonItem2]