14

-initメソッドで、タブの画像を次のように設定する TabBarController があります。

self.tabBarItem.image = [UIImage imageNamed:@"tabImage.png"];

リソースに tabImage@2x.png ファイルがあります。iPhone 4 シミュレーターまたは電話では、高解像度の画像は取得されていません。低解像度のバージョンは単純に拡大されています。

なぜこれが考えられるのでしょうか?

編集: いくつかの詳細情報: 明示的にtabImage@2x.png(または単にtabImage@2x) 使用しようとすると、表示されるタブの画像が非常に大きくなり、60px から 120px にスケーリングされているかのように、タブの境界を超えて拡大されます。そのため、supply という名前が何であれ、scale=1.0 の画像として扱われているように見えます。

4

11 に答える 11

11

シミュレーターでは大文字と小文字が区別されませんが、デバイスでは区別されることに注意してください。大文字と小文字が完全に一致していることを確認してください。ある時点でファイル名の大文字と小文字を変更した場合は、クリーンアップして再構築する必要があります。時々、シミュレーターの場合、Library/Application Support/iPhone Simulator/4.3/Applications/ のフォルダーを実際に吹き飛ばして、再構築して名前が変更されたイメージを取得する必要がありました。

常に使用

 [UIImage imageNamed:@"foo.png"]

これは、3.x および 4.x デバイス、および 4.x シミュレーターで機能します。Retina ディスプレイ (および 4.x シミュレーター) を搭載したデバイスは、魔法のように @2x バージョンの画像を取得します。iOS は、この機能と @2x.png ファイルについてスマートに変更されています。

@2x.png と normal.png の両方がプロジェクト ファイルに追加されていることを確認し、完全なクリーン & ビルドを実行します。他の人が述べたように、画像のサイズも確認してください。どうやら、それらが正確に 2 倍の寸法でない場合、機能しません (私はこれを自分で確認していません)。

.png をオフのままにしておくと、iOS 4.0 でのみ機能します。したがって、4.0+ のみのアプリを構築している場合は、次のように要求できます。

    [UIImage imageNamed:@"foo"]

高解像度の画像が 1 つしかなく、それを Retina デバイスと非 Retina デバイスの両方で使用したい場合は、view.contentMode をサイズに合わせて変更する必要があります。

于 2010-10-27T05:49:51.530 に答える
3

私も同じ問題を抱えていました。私のpngは正方形ではないことがわかりました。解決策:正方形にすると機能します。

于 2011-04-13T14:18:58.820 に答える
1

ファイルが XCode プロジェクトに追加され、プロジェクト エクスプローラーに表示されますか?

于 2010-07-27T11:01:43.960 に答える
1

私もこの問題を抱えていました。

2 つの画像を作成します。

  • 30x30 ピクセル
  • 60x60 ピクセル

60x60 ピクセルの画像に@2xというサフィックスを付けます。たとえば、tabBarImage@2x.pngです。次に、ストーリーボードまたはコードで、通常のtabBarImage.pngを指定すると、iOS は独自の裁量で @2x バージョンを選択します。

于 2013-01-17T20:39:50.413 に答える
0

この問題を引き起こす可能性のある 2 つのばかげた間違い (どちらも以前に犯したことがあります):

  1. 大きなバージョンではなく、誤って小さなバージョンに @2x という名前を付けている
  2. 大きいバージョンのサイズをわずかに (1 ピクセルずつ) 小さくする
于 2010-09-17T06:01:24.447 に答える
0

2 つのバージョンのイメージが必要であり、両方ともプロジェクト フォルダー内の同じ場所にあり、プロジェクトに追加する必要があります。

image.png 60x60 image@2.png 120x120

次に、単に使用します[UIImage imageNamed:@"image.png"]

自作のボタンでこのようにしたところ、うまくいきました(iOS 4.1)

于 2010-11-21T16:01:25.287 に答える
0

私はまったく同じ問題を抱えていました。

2 つの画像を作成します: im1.png と im1@2x.png 最初の画像で imageNamed: を呼び出します。

注意、imageNamed: は UIImage を初期化しないため、一時的な [[UIImageView new] initWithImage:[UIImage imageNamed: @"im1.png"]] として使用するか、UIImage を自分で初期化します。

于 2013-02-07T22:05:52.057 に答える
0

.png はオフのままにしておくことができます。それでもうまくいくと思いますが、試してみてください。

于 2010-07-27T03:13:02.727 に答える
0

The Gimp でアートを数時間やり直し、それを iPhone 4 のアプリで認識してロードしようとしました。

@2x拡張子が認識されず、ロードされない特定の画像で説明されている問題に遭遇しました。

どのパターンも識別できませんでした。私の画像はすべて[UIImage imageNamed:@"<name>.png"]シングルトンを使用して読み込まれます。起動後にイメージ スケール設定を調べたところ、1.0 (古いアート) と 2.0 (新しいアート) でした。

この問題を解決できた唯一の方法は、認識されていない高解像度の画像を削除して再度追加することでした。

于 2010-07-31T02:01:30.907 に答える
0

もう 1 つ気をつけなければならないことは、同じ名前の 2 つの画像があることです。

于 2011-10-24T22:08:12.567 に答える
0

同じ問題がありました。@2x イメージで、間違ったビルド ターゲットがチェックされていました (MyProject ではなく ServiceTests)。

于 2012-08-16T23:51:37.777 に答える