2013-09-06 30 views
12

私は自分のUITabBar用の画像を作成しています。私はサイズ60x60のものを作っています。なぜなら、それは網膜スクリーンが使うものなのですから。しかし、私がそのサイズを使用すると、バーのサイズが大きくなりすぎるので、画像の一部しか見ることができません。私は30x30に縮小すると動作しますが、そのサイズは網膜以外のディスプレイであると考えられます。 60x60を使用しても正しく表示されないのはなぜですか?UITabBarItem画像サイズ

+5

は、あなたの60x60の網膜画像がで '@ 2x'接尾辞で命名されていることを確認しますファイル名 – rmaddy

+0

ありがとう、これは働いた!! – user2397282

+0

[iOS7 Tabbarアイコンが大きすぎる]の複製が可能です(http://stackoverflow.com/questions/22166644/ios7-tabbar-icons-too-big) –

答えて

6

あなたは、高解像度の画像を供給されたので、iOSのは、標準解像度の画像を探していたときは、この動作を取得しました。

iOSが自動的にアクセス装置の解像度に応じて、あなたのための適切な画像サイズを選択します。したがって、網膜以外のデバイスの場合は「標準解像度」イメージ、網膜ディスプレイの場合は「高解像度」イメージを提供する責任があります。あなたはXcodeプロジェクト内のファイルを参照しているとき、あなたが次に

my-image.png  // for non-retina displays (Ex: 30x30 dpi) 
[email protected] // for retina displays (Ex: 60x60 dpi) 
[email protected] // for retina displays(plus editions) (Ex: 90x90 dpi) 

:あなたはiOSの中でこれを行う方法は、あなたのファイル名の末尾に「@ 2xの」を追加しますが、ファイル拡張子の前に、このようにすることですXCodeは自動的に "@ 2x"という接尾辞付きファイルを自動的に選択します。ファイル名は標準解像度(例: "my-image.png")にしてください。これは、デバイスが網膜ディスプレイを有しているかどうか、およびどのイメージを供給する必要があるかを開発者が検出する必要がなくなるので、非常に便利です。ここで

はコードの例です:

// Select an image named "my-image.png" 
UIImage *img = [UIImage imageNamed:@"my-image.png"]; 

// If the device this code is run on is a retina device, 
// then Xcode will automatically search for "[email protected]" and "[email protected]" 
// otherwise, it will use "my-image.png" 

あなたは、Appleの開発者向けサイトを経由して、被写体の詳細を読むことができます:Optimizing for High Resolution