iPhone 5の画面解像度のアプリを開発または移行するにはどうすればよいですか?


495

新しいiPhone 5ディスプレイは、新しいアスペクト比と新しい解像度(640 x 1136ピクセル)を備えています。

新しいアプリケーションを開発したり、既存のアプリケーションを新しい画面サイズに移行したりするには何が必要ですか?

古いディスプレイと新しいワイドスクリーンのアスペクト比の両方でアプリケーションを「ユニバーサル」にするには、何に注意すべきですか?

回答:


481
  1. Xcodeの最新バージョンをダウンロードしてインストールします。
  2. アプリの起動画面ファイルを設定します(ターゲット設定の一般タブで)。これは、iOS 9でiPadの分割ビューのサイズを含む、あらゆる画面のフルサイズを使用する方法です。
  3. アプリをテストします。うまくいけば、自動サイズ変更マスクを正しく設定したり、自動レイアウトを使用したりすれば、すべてが魔法のように機能するはずです。
  4. 調整していない場合は、できれば自動レイアウトを使用して、ビューのレイアウトを調整してください。
  5. 特に大きな画面に対して何かしなければならないことがある場合[[UIScreen mainScreen] bounds]、そのための特定のAPIがないように見えるので、高さを確認する必要があるようです。iOS 8以降では、画面サイズを垂直または水平に通常またはコンパクトに抽象化するサイズクラスもあり、UIを適応させるための推奨される方法です。

1
多分それはメッセンジャーを撃つものです。新しい解像度とアスペクト比?新しい自動回転?やったー!実際には、より多くの自動回転制御が良いかもしれません。
Rhythmic Fistman 2012

89
[UIImage imageNamed:@ "background.png"]は依然として「background.png」または「background@2x.png」のいずれかのみをロードし、「background-568h@2x.png」が存在する場合はロードしないことに注意してください。 。
2012

1
「Default-568h@2x.png」を追加するだけで十分ですか、それとも調整できる/すべきビルド設定に追加オプションがありますか?
Lukasz 2012

3
@Lukasz 1136 pxの高さをサポートするのに十分(かつ唯一の方法)です。アプリが適切に伸縮するかどうかは、ビューの設定方法によって異なりますが、すべてをハードコーディングした場合でも、自動サイズ変更マスクや自動レイアウトを設定するのはそれほど難しくありません。
Filip Radelic 2012

1
@FilipRadelic-指定した解像度、つまり1136 * 960、それは1136 * 640 .. ?? ..
NiKKi

117

iPhone 4S以前用にビルドされたアプリがある場合、iPhone 5ではレターボックスで実行されます。

アプリを新しい高さのある画面に適応させるには、最初に起動画像をDefault-568h@2x.pngに変更します。サイズは1136x640(HxW)である必要があります。はい、デフォルトの画像を新しい画面サイズで表示することが、アプリで新しいiPhone 5の画面全体を表示するための鍵となります

(命名規則はデフォルトの画像でのみ機能することに注意してください。別の画像に「Image-568h@2x.png」という名前を付けても、「Image@2x.png」の代わりに読み込まれることはありません。別の画像を読み込む必要がある場合異なる画面サイズの場合は、プログラムで行う必要があります。)

非常に運が良ければそれでいいかもしれませんが、おそらくもう少し手順を踏む必要があります。

  • Xibs / Viewsが自動レイアウトを使用してサイズを変更していることを確認してください。
  • ばねと支柱を使用してビューのサイズを変更します。
  • これがアプリにとって十分でない場合は、特定の1つの画面サイズ用にxib /ストーリーボードを設計し、他の画面サイズ用にプログラムで再配置します。

極端な場合(上記のいずれでも不十分な場合)には、2つのXibを設計し、適切なXibをView Controllerにロードします。

画面サイズを検出するには:

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
{
    CGSize result = [[UIScreen mainScreen] bounds].size;
    if(result.height == 480)
    {
        // iPhone Classic
    }
    if(result.height == 568)
    {
        // iPhone 5
    }
}

こんにちはサンジェイ、iphone 5以前かどうかを見つける必要があるため、それに応じてすべてのサイズを変更する必要があります。たとえば、ナビゲーションバーとタブバーを備えた高さ367のテーブルビューがある場合、iphone 5のサイズを変更する必要があります
Raheelサディク

2
iPod touchはどうですか?次世代のiPhoneについてはどうですか?iPhone / iPhone5ではなく、3.5インチ/ 4インチの画面サイズを参照する必要があります
valexa

2
注意すべきもう1つの問題は、xibのサイズが変更される前にviewDidLoadが呼び出されるため、nibの内容に基づいて計算を行う場合は、位置がどのようにシフトするか(またはviewWillAppearで上記の計算を行う)に注意してください。
Kendall Helmstetter Gelner 2013

30

本当に必要なことは、「Default-568h@2x.png」という名前の起動画像をアプリのリソースに追加することだけです。通常、(運が良ければ)アプリは正しく動作します。

アプリがタッチイベントを処理しない場合は、キーウィンドウが適切なサイズであることを確認してください。回避策は適切なフレームを設定することです:

[window setFrame:[[UIScreen mainScreen] bounds]]

iOS 6に移行する場合、画面サイズに関連しない他の問題があります。詳細については、iOS 6.0リリースノートをお読みください。


22

ときどき(ストーリーボードアプリの場合)、レイアウトが十分に異なる場合は、viewControllerでデバイスに応じて異なるxibを指定する価値があります(この質問を参照してください-iPhone 5を処理するためにコードを変更する必要があります)。 init、異なるグラフィックが必要な場合、自動サイズ変更マスクをいじる量は機能しません。

-(id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

    NSString *myNibName;
    if ([MyDeviceInfoUtility isiPhone5]) myNibName = @"MyNibIP5";
    else myNibName = @"MyNib";

    if ((self = [super initWithNibName:myNibName bundle:nibBundleOrNil])) {


...

これは、古いiOSバージョンを対象とするアプリに役立ちます。


+1しかし、うんざりするのは将来の互換性です。現在、このコードはiPhone 5デバイスのみを考慮しているため安全ではありません。画面サイズのチェックがより安全な代替手段となります。
Stunner

真-これはデバイスタイプを返すユーティリティの一部である可能性があります-これは、実際にデバイスを取得することではなく、さまざまなnibの使用方法を示すための例にすぎません。
SomaMan 2013年

20

ここに素敵なチュートリアルがあります(MonoTouch用ですが、MonoTouchプロジェクト以外の情報も使用できます):http :
//redth.info/get-your-monotouch-apps-ready-for-iphone-5 -ios-6-today /

  1. Default-568h@2x.png」 という名前で、スプラッシュ/デフォルト画面の新しい画像(640 x 1136ピクセル)を作成します

  2. ではiOSシミュレータ「> Deviceメニュー、及び選択- 、ハードウェアにアクセスしてくださいiPhone(網膜4インチ)

  3. 他の画像、例えば背景画像を作成する

  4. iPhone 5を検出して新しい画像を読み込みます。

public static bool IsTall
{
    get {
        return UIDevice.currentDevice.userInterfaceIdiom
                    == UIUserInterfaceIdiomPhone
                && UIScreen.mainScreen.bounds.size.height
                    * UIScreen.mainScreen.scale >= 1136;
    }
}

private static string tallMagic = "-568h@2x";
public static UIImage FromBundle16x9(string path)
{
    //adopt the -568h@2x naming convention
    if(IsTall())
    {
        var imagePath = Path.GetDirectoryName(path.ToString());
        var imageFile = Path.GetFileNameWithoutExtension(path.ToString());
        var imageExt = Path.GetExtension(path.ToString());
        imageFile = imageFile + tallMagic + imageExt;
        return UIImage.FromFile(Path.Combine(imagePath,imageFile));
    }
    else
    {
        return UIImage.FromBundle(path.ToString());
    }
}

13

XIBを介してiPhone5およびiPhone4を移行するのは簡単です......

UIViewController *viewController3;
if ([[UIScreen mainScreen] bounds].size.height == 568)
{
    UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone5screen" bundle:nil] autorelease];               
}    
else
{
     UIViewController *viewController3 = [[[mainscreenview alloc] initWithNibName:@"iphone4screen" bundle:nil] autorelease];
}

12

ここでこの問題を解決します。〜568h @ 2xサフィックスを画像に追加し、〜568hをxibに追加するだけです。これ以上のランタイムチェックやコード変更は必要ありません。


このクラスをプロジェクトに追加するだけです。追加のコードを書く必要はありません。たとえば、解像度320x480、640x960、640x1136(iPhone 3、iPhone 4、iPhone 5)の背景画像を含む1つのxibファイルがあります。正しい自動サイズ変更マスクを設定し、画像image.png、image @ 2x.png、image〜568h @ 2x.pngに名前を付けます。
Shimanski Artem

@ShimanskiArtemしかし、いくつかのコンポーネントが別の位置に実行されていることに気づきました!、何か考えはありますか????
アデル

自動サイズ変更マスクを確認してください。他に理由はない。
Shimanski Artem 2013

10

私は新しいデフォルトの起動画像を追加し、(他のいくつかのSEの回答をチェックアウトして...)ストーリーボードがすべて自動的にサイズ変更され、サブビューを表示するようにしましたが、網膜は4インチのままです。

次に、info plistに「Launch image」の項目が「Default.png」に設定されていることに気づきました。これにより、この項目は削除され、不思議なレターボックスは表示されなくなりました。うまくいけば、他の誰かが私が耐えた同じ狂気を救うでしょう。


9

私は、それがすべてのケースでうまくいくとは限らないと思いますが、私の特定のプロジェクトでは、NIBファイルの重複を避けました:

common.h画面の高さに基づいて、これらの定義をどこかに作成できます。

#define HEIGHT_IPHONE_5 568
#define IS_IPHONE   ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)
#define IS_IPHONE_5 ([[UIScreen mainScreen] bounds ].size.height == HEIGHT_IPHONE_5)

ベースコントローラーで:

- (void)viewDidLoad
{
    [super viewDidLoad];
    if (IS_IPHONE_5) {
        CGRect r = self.view.frame;
        r.size.height = HEIGHT_IPHONE_5 - 20;
        self.view.frame = r;
    }
    // now the view is stretched properly and not pushed to the bottom
    // it is pushed to the top instead...

    // other code goes here...
}

9

constants.hファイルあなたは、これらのステートメントを定義する追加することができます。

 #define IS_IPAD UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad 
 #define IS_IPHONE UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone
 #define IS_WIDESCREEN (fabs((double)[[UIScreen mainScreen] bounds].size.height - (double)568) < DBL_EPSILON) 
 #define IS_IPHONE_5 (!IS_IPAD && IS_WIDESCREEN)

9

アプリがiPhone 5 Retinaをサポートできるかどうかを判断するには、これを使用します(これは、ディスプレイのタイプ、4S Retinaなどを返す方がより堅牢である可能性がありますが、以下に記載されているように、iPhoneがiOS5 Retinaをはい、もしくは、いいえ)

一般的な「.h」ファイルに次を追加します。

BOOL IS_IPHONE5_RETINA(void);

一般的な「.m」ファイルに以下を追加します。

BOOL IS_IPHONE5_RETINA(void) {
    BOOL isiPhone5Retina = NO;
    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
        if ([UIScreen mainScreen].scale == 2.0f) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);

            if(result.height == 960){
                //NSLog(@"iPhone 4, 4s Retina Resolution");
            }
            if(result.height == 1136){
                //NSLog(@"iPhone 5 Resolution");
                isiPhone5Retina = YES;
            }
        } else {
            //NSLog(@"iPhone Standard Resolution");
        }
    }
    return isiPhone5Retina;
}

8

まず最初に2つのxibを作成し、すべてのデリゲート、メインクラスをにアタッチします。xib次に、以下のappdelegate.mファイルにこの条件を記述できます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 

    if ([[UIScreen mainScreen] bounds].size.height == 568)
        {

        self.ViewController = [[ViewController alloc] initWithNibName:@"ViewControlleriphone5" bundle:nil];
        }

        else
        {
             self.ViewController = [[ViewController alloc] initWithNibName:@"ViewControlleriphone4" bundle:nil];

        }

ViewControllerクラス内でも、要件に応じて、プログラム内の任意の場所で使用できます。最も重要なことは、2つのxibファイルを別々に作成したことです。iphone 4(320*480) and iphone 5(320*568)


7

シングルトンクラスで以下のメソッドを試してください:

-(NSString *)typeOfDevice
    {
        if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
        {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            if(result.height == 480)
            {
                return @"Iphone";
            }
            if(result.height == 568)
            {
                return @"Iphone 5";
            }
        }
        else{
            return @"Ipad";;
        }


        return @"Iphone";
    }

7

このAuto Layout機能を使用して、iPhone 5の画面解像度を使用してデザインを作成できます。これは、4インチと3.5インチの両方のデバイスで機能しますが、この場合は、レイアウトマネージャーに関する十分な知識が必要です。


ただし、iOS 6をサポートしていないデバイスでは機能しません。
jonypz

7

でのチェックbounds568、横長モードでは失敗します。iPhone 5は縦向きモードでのみ起動しますが、回転をサポートする場合は、iPhone 5の「チェック」でもこのシナリオを処理する必要があります。

向きの状態を処理するマクロは次のとおりです。

#define IS_IPHONE_5 (CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size, CGSizeMake(640, 1136)))

「preferredMode」呼び出しの使用は、数時間前に読んだ別の投稿からのものであるため、このアイデアは思いつきませんでした。


6

最初にこの画像を表示します。その画像では、Retina 4サポートの警告が表示されているので、この警告をクリックして[追加]をクリックすると、Retina 4スプラッシュスクリーンがプロジェクトに自動的に追加されます。

ここに画像を表示

そしてこのコードを使用した後:

if([[UIScreen mainScreen] bounds].size.height == 568)
    {
        // For iphone 5
    }
    else
    {
        // For iphone 4 or less
    }

6

ハードコードされた値がなく、すべてに対して1つのコードベースを持っているので、どのデバイスでもこのような問題に直面したことはありません。デバイスごとに1つではなく、最大サイズのイメージをリソースとして使用するようにしています。たとえば、Retinaディスプレイ用に1つ用意し、アスペクトフィットとして表示すると、すべてのデバイスでそのままのビューになります。たとえば、実行時にボタンのフレームを決定することになります。これには、パテントビューの例の%値を使用します。たとえば、幅を親ビューの半分にしたい場合は、親の50%を取り、高さと中心にも同じことが適用されます。

これがあれば、xibsも必要ありません。


5

この定義を使用して、画面サイズに基づいてiPhone 5を使用しているかどうかを計算できます。

#define IS_IPHONE_5 ( fabs( ( double )[ [ UIScreen mainScreen ] bounds ].size.height - ( double )568 ) < DBL_EPSILON )

次に、単純なifステートメントを使用します。

    if (IS_IPHONE_5) {

    // What ever changes
    }

4

ピーター、カナッピを実際に見てみるべきです、それはあなたのためにすべてを行います、あなたがしなければならないすべてはそのようなレイアウトを指定することです:

button mySubmitButton 'Sumbit' (100,100,100,30 + 0,88,0,0) { ... }

そこからCanappiは、アプリが実行されているデバイスを検出し、使用する正しいObjective-Cコードを生成します。

(100,100,100,30) for iPhone4
(100,**188**,100,30) for iPhone 5

Canappiは、テキスト形式であることを除いて、Interface BuilderとStory Boardを組み合わせたように機能します。XIBファイルが既にある場合は、UI全体を最初から再作成する必要がないように変換できます。


メタに感謝します。これを見ていきますが、私は非常に新しいプログラマーであり、クリーンなObjective-Cでこれを処理する方法を本当に学びたいと思っています。
PeterK 2012

4

画面サイズを手動で確認して、現在使用しているデバイスを確認できます。

#define DEVICE_IS_IPHONE5 ([[UIScreen mainScreen] bounds].size.height == 568)

float height = DEVICE_IS_IPHONE5?568:480;
if (height == 568) {
    // 4"

} else {

    // 3"

}

3

次のコードを追加できます。

if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        if ([[UIScreen mainScreen] respondsToSelector: @selector(scale)]) {
            CGSize result = [[UIScreen mainScreen] bounds].size;
            CGFloat scale = [UIScreen mainScreen].scale;
            result = CGSizeMake(result.width * scale, result.height * scale);

            if(result.height == 960) {
                NSLog(@"iPhone 4 Resolution");
            }
            if(result.height == 1136) {
              NSLog(@"iPhone 5 Resolution");
            }
        }
        else{
            NSLog(@"Standard Resolution");
        }
    }

2
これは実際には少し間違っています。iOS 4.0以降を実行しているすべてのiPhoneがscaleセレクターに応答しますUIScreen、「標準解像度」コードが実行されない場合があります。
Filip Radelic

3

これは本当の普遍的なコードです、あなたは3つの異なるストーリーボードを作成することができます:

プロジェクトのユニバーサルモードを設定し、メインストーリーのiPhoneをiPhone5ストーリーボードに、iPadのメインをiPadターゲットストーリーボードに設定し、新しいストーリーボードターゲットをiphoneに追加し、iphone 4s以下の解像度を変更して、AppDelegate.mを実装します

iPhone4 / 4s(3 / 3Gでも同じ)iPhone5用、プロジェクトをユニバーサルにして、新しいストーリーボードターゲットをiPad用にして、次のコードを追加してAppDelegate.mdidFinishLaunching追加します。

    if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone){
        UIStoryboard *storyBoard;

        CGSize result = [[UIScreen mainScreen] bounds].size;
        CGFloat scale = [UIScreen mainScreen].scale;
        result = CGSizeMake(result.width *scale, result.height *scale);

//----------------HERE WE SETUP FOR IPHONE4/4s/iPod----------------------

        if(result.height == 960){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }

//----------------HERE WE SETUP FOR IPHONE3/3s/iPod----------------------

        if(result.height == 480){
            storyBoard = [UIStoryboard storyboardWithName:@"iPhone4_Storyboard" bundle:nil];
            UIViewController *initViewController = [storyBoard instantiateInitialViewController];
            [self.window setRootViewController:initViewController];
        }
    }

        return YES;
 }

これで、iPhone 3 / 3Gs / 4 / 4s / 5すべての世代のiPodおよびすべてのタイプのiPad用のユニバーサルアプリを作成しました。

すべてのIMGを統合することを忘れないでください myImage.pngmyImage@2x.png


2

私によると、このような問題に対処し、デバイスの高さを確認するために必要ないくつかの条件を回避する最良の方法は、ビューまたはビューに追加するUI要素に相対フレームを使用することです。たとえば、ビューの下部またはタブバーの真上にある必要のあるUI要素には、ビューの高さまたはタブバー(存在する場合)に対してyの原点を使用する必要があり、自動サイズ変更プロパティも用意されています。これがうまくいくことを願っています


1

一連の条件を使用する代わりに、画面サイズを使用してビューのサイズを自動的に変更できます。

int h = [[UIScreen mainScreen] bounds].size.height;
int w = [[UIScreen mainScreen] bounds].size.width;
self.imageView.frame = CGRectMake(20, 80, (h-200), (w-100));

私の場合、上部のいくつかの入力フィールドと下部のいくつかのボタンの間のスペースを埋めるビューが必要なので、画面サイズに基づいて左上隅と可変右下を修正しました。私のアプリは、カメラで撮影した写真を画像ビューに表示するため、取得できるすべてのスペースが必要です。


1

既存のアプリをユニバーサルに変換する必要がある場合は、対応するxibファイル-> show Utilities-> Show Sizeインスペクターを選択する必要があります。

サイズインスペクターでは自動サイズを確認できます。このツールを使用すると、既存のiOSアプリに変換できます。


0

xCode 5を使用して、Project> Generalで「Migrate to Asset Catalog」を選択します。

次に、[ファインダーに表示]を使用して起動画像を見つけます。640x1136になるようにダミー編集してから、下の画像に示すようにアセットカタログにドラッグできます。

iOS7とiOS6 R4の両方のセクションに640x1136の画像があることを確認してください。次回アプリを起動すると、黒いバーが消え、アプリは4インチ画面を使用します

ここに画像の説明を入力してください


0

注目に値するポイント-新しいXcodeでは、この画像ファイルDefault-568h@2x.pngをアセットに追加する必要があります


0

使用 Auto Layoutビュー機能をします。すべての解像度に自動的に調整されます。

〜iphoneまたは〜ipadのいずれかのサフィックスが付いたコントローラー名を持つコントローラー用に2つのxibを作成します。コンパイル時に、Xcodeはデバイスに基づいて適切なxibを取得します。

iPhoneとiPadに移植できるようにビューがシンプルな場合は、iPhoneとiPadの両方で1つのxibを作成する場合は、サイズクラスを使用します。


0

iOSデバイスとiOSシミュレーターの両方でテストする場合、わずかな問題があります。シミュレータ(XCode 6.0.1)は[[UIScreen mainScreen] bounds].size、デバイスの向きに応じて幅と高さの切り替え値を提供するようです。

したがって、これは適切な物理画面サイズを決定するときに問題になる可能性があります。このコードは、2014年すべてを区別するのにも役立ちます。iPhoneモデルの世代:

  • アイフォーン4エス
  • iPhone5(およびiPhone5s)
  • iPhone6(およびiPhone6 +)

また、iPhone6 +とiPhone6などを区別するように簡単に変更することもできます。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    CGSize iOSDeviceScreenSize = [[UIScreen mainScreen] bounds].size;

    if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPhone)
    {
        if (iOSDeviceScreenSize.width > 568 || // for iOS devices
            iOSDeviceScreenSize.height > 568) // for iOS simulator
        {   // iPhone 6 and iPhone 6+

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone6
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone6" bundle:nil];

            NSLog(@"loaded iPhone6 Storyboard");
        }
        else if (iOSDeviceScreenSize.width == 568 || // for iOS devices
                 iOSDeviceScreenSize.height == 568) // for iOS simulator
        {   // iPhone 5 and iPod Touch 5th generation: 4 inch screen (diagonally measured)

            // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone5
            storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone5" bundle:nil];

            NSLog(@"loaded iPhone5 Storyboard");
        }
        else
        {   // iPhone 3GS, 4, and 4S and iPod Touch 3rd and 4th generation: 3.5 inch screen (diagonally measured)

                // Instantiate a new storyboard object using the storyboard file named Storyboard_iPhone4
            storyboard = [UIStoryboard story    boardWithName:@"MainStoryboard_iPhone" bundle:nil];

                NSLog(@"loaded iPhone4 Storyboard");
        }
    }
    else if ([UIDevice currentDevice].userInterfaceIdiom == UIUserInterfaceIdiomPad)
    {   // The iOS device = iPad

        storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPadnew" bundle:nil];

        NSLog(@"loaded iPad Storyboard");
    }

    // rest my code
}

0

UIインターフェイスに応じて、アプリケーションでAutoresizing Maskを使用することをお勧めします。これにより、多くの問題が軽減され、iPhone 4および5画面用に別のUIを作成するよりも優れています。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.