UIBarButtonItem
を含むUIImage
をUIToolbar
に追加しようとしています。画像に色が付けられ続け、元の色付き画像として表示することができません-したいのは、UIBarButtonItem
!に逐語的に画像を表示することだけです! iOS 7移行ガイドの指示に従って、画像レンダリングモードをUIImageRenderingModeAlwaysOriginal
に設定します。
UIImage *image = [UIImage imageNamed:@"myImage.png"];
image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *ratingImage = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStyleBordered target:nil action:nil];
[toolbar setItems:[NSArray arrayWithObjects:ratingImage, nil] animated:YES];
注意すべきことの1つは、アプリのメインUIWindowのtintColorをロード時に設定することです...これは私の問題に関しては重要ではないかもしれませんが、言及すると思いました。
私もこれを理解しようとして夜を過ごしました。ソリューションに非常に近かった。トリックは、UIImageをレンダリングモードでインスタンス化することです。
代わりに:
UIImage *image = [UIImage imageNamed:@"myImage.png"];
image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
これを行う:
UIImage *image = [[UIImage imageNamed:@"myImage.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
そしてそれは動作します!
私の場合、私はナビゲーションバーをIB内のViewControllerにドラッグし、BarButtonItemを追加しました。ただし、IBでアイテムに画像を提供しないでください。アウトレットを作成し、これを実行して(上記で作成したように)UIImageを割り当てます。
[myCustomBarButtonItem setImage:image];
これがあなたのために働くことを願っています。
UIImageRenderingModeAlwaysOriginalは、XCodeでAssets.xcassets「folder」の画像を選択し、「Render as」ドロップダウンを「Original image」に設定することでも設定できます。
Swift 2.1+の場合、次のようになります。
let image : UIImage? = UIImage(named:"myImage.png")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)
更新済みSwift
let image : UIImage? = UIImage(named:"myImage.png")!.withRenderingMode(.alwaysOriginal)