63

UIBarButtonItemaを含む aUIImageをaに追加しようとしてい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 を設定することです...これは私の問題に関しては重要ではないかもしれませんが、言及したいと思います。

4

5 に答える 5

11

UIImageRenderingModeAlwaysOriginal は、XCode の Assets.xcassets "フォルダー" で画像を選択し、"Render as" ドロップダウンを "Original image" に設定することによっても設定できます。

于 2016-02-06T13:54:11.003 に答える
9

Swift 2.1+ の場合、次のようになります。

let image : UIImage? = UIImage(named:"myImage.png")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal)

更新されたSwift 3

let image : UIImage? = UIImage(named:"myImage.png")!.withRenderingMode(.alwaysOriginal)
于 2015-11-23T17:26:00.460 に答える
0

受け入れられた答えは問題ありませんがUIBarButtonItem、ストーリーボードまたはxibに配置した場合は、次のことができます。

  • 画像が存在するアセット カタログに移動します
  • 画像を選択
  • 属性インスペクターに移動します (cmd-opt-4)
  • 「レンダリング」を「元の画像」に設定します

この画像のすべてのインスタンスを着色せずに表示したい場合にのみ、これを行ってください。

ここに画像の説明を入力

于 2018-11-27T01:38:10.407 に答える
-4

v7 より前のバージョンの iOS で動作させたい場合は、次のようにする必要があります。

UIImage *image = [UIImage imageNamed:@"myImage.png"];
@try {
  image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
} @catch (NSException *exception) {
}

imageWithRenderingMode: は iOS 7 のメソッドであるため、下位バージョンで使用しようとすると例外が発生します。

于 2014-03-29T21:27:33.453 に答える