1

私は現在iOSiPhoneアプリケーションを持っています。

私がやりたいのは、iPadもターゲットにできるようにユニバーサルにすることです。

私がやったことは、ターゲットに移動して、iOSアプリケーションのターゲットをiPhoneからユニバーサルに変更することでした。

これで、iPadでアプリケーションを実行すると、iPadのすべてのビューのサイズが自動的に変更されます。

ただし、一部のビューがあり、背景画像があまり見栄えが良くないため、高解像度の画像を使用する必要があるか、一般的にiPadバージョンでいくつかの変更を行う必要があります。

iPadの.nibファイルはどこにありますか?つまり、私はiPhoneのものしか見ません。iPhoneで実行すると、これらのファイルが使用されます。iPadで実行すると、すべてが正しくサイズ変更されますが、これらの.nibファイルはどこにありますか?

私が読んだチュートリアル(かなり古い)は、iPadもターゲットにする場合、新しい.nibファイルをiPad用に正確に作成する必要があることを示唆しています。なぜこれらのファイルが表示されないのですか?

4

3 に答える 3

2

Retinaグラフィックの動作と同様に、iOSに拡張機能に基づいて適切なxibを自動的にロードさせることができます。xibの名前がで、それをiPhoneiPadのバージョンAwesomeに変換する場合(共有するのではなく、次のように名前を変更します。

iPhone版:

Awesome~iphone

iPad版:

Awesome~ipad

次に、iOSにロードするように指示するAwesomeと、現在のプラットフォームに基づいて自動的にロードするものが選択されます。ifコードにステートメントは必要ありません!必要に応じて引き続き使用できますが必須ではありません。

:名前の変更後にクリーンアップを実行する必要がある場合があります。名前を変更すると、一部のファイルがビルドに残ってしまうことがあります。

于 2013-02-26T18:41:44.627 に答える
1

新しい.xibファイルを作成して同じクラスに設定するだけで、次の条件でそのviewControllerを初期化できます。

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
     yourVC = [[YourViewController alloc] initWithNibName:"YourViewController_ipad" andBundle:nil];
}
else
{
    yourVC = [[YourViewController alloc] initWithNibName:"YourViewController" andBundle:nil];
}

可能な限り、同じ.xibを使用するようにしてください。ただし、多くの場合、それを実行して見栄えを良くすることはできないため、1秒だけ作成します。Xcodeは自動的にそれを行いません。

于 2013-02-26T18:36:26.540 に答える
1

クラスがあるとしましょう。それを呼びますTwo

Twoクラスを構成する現在のファイルは次のとおりです。

Two.h
Two.m
Two.xib

Two.xibUIViewiPhone用のサイズが含まれています。iPadのサイズのビューを作成するには、新しいXIBファイルを作成し(名前を付けTwo_iPad.xib)、XIBをに接続し、 iPadTwoのサイズを変更して、それに応じてデザインする必要があります。UIViewTwo_iPad.xib

の新しいインスタンスを作成するときTwoは、次のようにします。

Two *two;

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
    //they are using an iPad

    two = [[Two alloc] initWithNibName:@"Two_iPad" bundle:nil];

} else {
    //they are using an iPhone/iPod Touch

    two = [[Two alloc] initWithNibName:@"Two" bundle:nil];

}

Two;の新しいインスタンスを作成しています。ただし、ユーザーが使用しているデバイスを確認し、対応するXIBファイルを使用しています。

于 2013-02-26T18:38:23.107 に答える