UITabBarの画像を作成しています。サイズは60x60にしています。これは、Retinaスクリーンで使用するためです。ただし、このサイズを使用すると、バーに大きく表示されるため、画像の一部しか表示されません。 30x30に縮小すると機能しますが、そのサイズはRetina以外のディスプレイ用です。 60x60を使用すると正しく表示されないのはなぜですか?
Retinaイメージの名前を[email protected]
に変更しなければならない可能性があります。
IOSが標準解像度の画像を探していたときに高解像度画像を提供していたため、この動作が発生していました。
iOSは、アクセスするデバイスの解像度に応じて、適切な画像サイズを自動的に選択します。したがって、非網膜デバイスの場合は「標準解像度」の画像を、網膜ディスプレイの場合は「高解像度」の画像を提供する必要があります。 iOSでこれを行うには、次のように、ファイル名の最後に、ファイル拡張子の前に「@ 2x」を追加します。
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)
次に、XCodeプロジェクトでファイルを参照する場合、ファイル名を標準解像度(たとえば、「my-image.png」)に指定するだけでよく、アクセスするデバイスにRetinaディスプレイがある場合はXCodeは、「@ 2x」というサフィックスが付いたファイルを自動的に選択します。これにより、開発者がデバイスにデバイスがあるかどうかを検出する必要がなくなるため、非常に便利です。網膜ディスプレイ、および提供する必要がある画像。
次にコード例を示します。
// 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開発者サイト: 高解像度用に最適化