0

私は自分のアプリをiphone5に移行しようとしています。スタックオーバーフローで他の質問をすでに見ましたが、正しく表示するにはまだいくつかの問題に直面しています。

CGRect screenBounds = [[UIScreen mainScreen] bounds];
    if (screenBounds.size.height == 568) {
        // code for 4-inch screen
        _backgroundimageView = [[UIImageView alloc] initWithFrame:CGRectMake(0,0,320,500)];
        [_backgroundimageView setImage:[UIImage imageNamed:@"image1-568h@2x.png"]];
    } else {
        // code for 3.5-inch screen
        [_backgroundimageView setImage:[UIImage imageNamed:@"image1.png"]];
    }

私がbackgroundimageViewに設定したサイズは、サイズインスペクターで320 x 370であり、image1-568h@2x.pngのサイズは640x 1136であり、image1.pngのサイズは640x733です。したがって、3.5インチの画面の場合は次のように表示されます。通常、4インチ画面の場合は、それに応じてサイズを変更する必要があります。

しかし、問題は、4インチの画面の場合、サイズが変更されず、残りの領域をカバーするために白い境界線が付いた3インチの画面と同じように表示されることです。

それを解決するためにいくつかのガイダンスが必要です。ありがとう..私がしている間違いを指摘することができます...

4

3 に答える 3

1

backgroundimageViewiPhone 5 の解像度を再度割り当てている理由。の同じ IBOutlet を使用して、backgroundimageViewそのフレームと画像を変更するだけです。

CGRect screenBounds = [[UIScreen mainScreen] bounds];
    if (screenBounds.size.height == 568) {
        // code for 4-inch screen
        _backgroundimageView.frame = CGRectMake(0,0,320,460);
        [_backgroundimageView setImage:[UIImage imageNamed:@"image1-568h@2x.png"]];
    } else {
        // code for 3.5-inch screen
         _backgroundimageView.frame =CGRectMake(0,0,320,370);
        [_backgroundimageView setImage:[UIImage imageNamed:@"image1.png"]];
    }
于 2013-02-20T04:46:25.647 に答える
0

デフォルトの画像名は "Default-568h@2x.png" でなければなりません (image1-568h@2x.png ではありません)。

また、マクロでiphone5をチェックすることもできます。

#define IS_IPHONE (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 (IS_IPHONE && [[UIScreen mainScreen] bounds].size.height == 568.0f)
于 2013-02-20T04:56:22.097 に答える
0

イメージビューのコンテンツモードが中心だと思うので、イメージビューでこれを試してください

[_backgroundimageView setContentMode:UIViewContentModeScaleAspectFill]
于 2013-02-20T04:57:37.187 に答える