0

私の英語でごめんなさい。

最初のビューで開発しようとしているアプリには、画面サイズを完全にカバーしたい 1 つのバナーと 1 つのタブ バーの 4 つの画像のセットがあります。3.5 インチの iPhone では問題ありませんが、問題は 4 インチの iPhone から始まります。現在、私は自動レイアウトを使用しており、すべての画像には上部のスーパービューへの制約がありますが、実際の問題を解決するための最良の解決策ではないと思いますビュー。

この問題を解決するには、どのソリューションが最適だと思いますか? 画像を引き伸ばしてサイズを変更して、画面全体を覆うことはできますか? または、デバイスの画面サイズに応じて読み込まれる 2 つの異なる画像セットを用意する方がよいでしょうか?

私が持っている別のアイデアは、iPhone 4 インチに適切なサイズの画像を使用し、iPhone 3.5 インチに表示される場合、この例の下部のように部分的に覆われていることです。

http://www.manuelragazzini.it/microfoni.jpg

以下に、私の状況とその結果の例を投稿します(3.5インチにはナビゲーションバーもありますが、プログラムで非表示になっているため、ビューは完璧です)

http://www.manuelragazzini.it/domanda.jpg

4

2 に答える 2

0

タブとマイクの間にこの空白を入れたい場合は、マイクの例として2セットの画像を使用します.

コードで iPhone モデルをチェックし、対応する画像をロードすることで、これを実装できます。

ディスク容量が少ない場合 (複数の iPhone モデル イメージを持つことができない場合) は、サイズ変更メソッドを使用できます。

于 2013-04-27T10:48:35.420 に答える
0

3.5 インチと 4 インチのディスプレイ用に 2 つの別々の nib ファイルを提供する方がよいと思います。はい、これによりあなたの努力が増えることはわかっていますが、コードは将来的により管理しやすくなります。別のペン先を用意するだけです。

次のメソッドを使用して、必要な寸法のたびに nib を動的にロードできます。

-(void)pushViewController:(UIViewController*)viewController withNib:(NSString*)nibName
{


 if(nibName){

    nibName=[self getNibNameForNib:nibName];

    viewController=[viewController initWithNibName:nibName bundle:nil];
    [self.navigationController pushViewController:viewController animated:YES];
}

}


-(NSString*)getNibNameForNib:(NSString *)nibName
{
NSString *newNibName=nil;

if([self isIphone5Retina4InchDisplay]){
    newNibName=[nibName stringByAppendingString:@"-568h"];
}

if(newNibName && [[NSBundle mainBundle] pathForResource:newNibName ofType:@"nib"] != nil)
{
    //if iphone 5 and nib is also present for that resolution.
    nibName=newNibName;
}

return nibName;
}

/**
 Method to get if device is 4 inch iphone 5 retina device or not.
 */
-(BOOL)isIphone5Retina4InchDisplay
{   

CGRect screenBounds = [[UIScreen mainScreen] bounds];
if (screenBounds.size.height == 568) {
    // code for 4-inch screen
    return YES;
} else {
    // code for 3.5-inch screen
    return NO;
  }
}

RETINA 4 インチ NIB の名前を LoginViewController-568h.xib として、-568h サフィックスを追加します。毎回この pushViewController メソッドを使用して、新しいビュー コントローラーをプッシュします。このメソッドは、Base ビュー コントローラーに記述できます。

于 2013-05-01T06:48:01.883 に答える