2

iPhoneの解像度などをよりよく理解したいと思います。

基本的な buttonView と logoView を持つアプリケーションがあります。画面サイズに応じて高さが自動的に収まる logoView の高さを出力しました。

iphone5の場合、私は318を使用しています。iphone4(<) の場合、230 を使用できます。

私の質問は、このビューの背景に使用される画像をどのように処理すればよいかです。次の 3 つの画像を 1 つ作成しますか? -iphone3 etc (230) -iphone4 retina (230 サイズ, @2) -iphone5 retina (328 サイズ, @2)

または、2x 230 の画像のみを作成し、iphone5 を使用してより多くのスペースが利用可能な場合、画像を 318 に引き伸ばすことはできますか?

4

3 に答える 3

7

それはすべてあなたのイメージに依存します:

  • 画像を引き伸ばすことができる場合、UIImageView がすべての作業を行います。
  • 画像の一部だけを引き伸ばす必要がある場合は、これを使用する必要があります。
    • imageView.image = [imageView.image resizableImageWithCapInsets:UIEdgeInsetsMake(top, left, bottom, right)];
  • 画像を引き伸ばすことができない場合は、電話用に別の画像を作成し、実行時に変更する必要があります。

アップデート

viewDidLoad最後の点として、メソッドで次のようなことができます。

BOOL isIPhone = [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone;
BOOL isIPhone5 = isIPhone && ([[UIScreen mainScreen] bounds].size.height > 480.0);
if (isIPhone5) {
   imageView.image = [UIImage imageNamed:@"iphone4image.png"];
} else {
    imageView.image = [UIImage imageNamed:@"iphone5image.png"];
}
于 2013-03-27T15:46:38.647 に答える
3

これをもう少し簡潔にしたい場合は、マクロを使用して長い画面サイズを考慮することができます。

#define ASSET_BY_SCREEN_HEIGHT(regular, longScreen) (([[UIScreen mainScreen] bounds].size.height <= 480.0) ? regular : longScreen)

使用例:

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.splashScreenImageView.image = [UIImage imageNamed:ASSET_BY_SCREEN_HEIGHT(@"Default", @"Default-568h")];
}
于 2014-08-20T19:28:20.377 に答える