私はすでに iPhone 4 と iPad で適切に動作しているプロジェクトを持っています。次に、そのプロジェクトを iPhone 5 (4 インチ) と互換性を持たせたいと考えています。
「自動レイアウトを使用」を使用しようとしましたが、機能しません。
私の Xcode のバージョンはバージョン 4.5 (4G182) です。
インターネットで検索しましたが、手がかりが見つかりませんでした。
誰かがすでにこの問題を解決している場合は、私を案内してください。
私はすでに iPhone 4 と iPad で適切に動作しているプロジェクトを持っています。次に、そのプロジェクトを iPhone 5 (4 インチ) と互換性を持たせたいと考えています。
「自動レイアウトを使用」を使用しようとしましたが、機能しません。
私の Xcode のバージョンはバージョン 4.5 (4G182) です。
インターネットで検索しましたが、手がかりが見つかりませんでした。
誰かがすでにこの問題を解決している場合は、私を案内してください。
Default-568h@2x.png という名前のプロジェクトに iPhone 5 のデフォルト画像を配置します。その後、iPhone 5 シミュレーターがアプリをフルスクリーンで起動しました。
レイアウトによっては、自動レイアウトが必要ない場合があります。IB の自動サイズ変更設定ですべてのレイアウトの問題を解決できました。結局、それは簡単でした。次の 4 種類の問題がありました。
私は既存のプロジェクトでこの方法を好みました。次のプロジェクトでは、自動レイアウト機能を確認します。
ベスト、ベンジャミン
別のxibファイルを作成することはお勧めしません。これが私が行うことです。1。4インチの起動画面を追加します。iPhone5のすべての画面を使用する場合は必須です。他の設定はありません。2. xibファイルを使用している場合は、インターフェイスビルダーでファイルを開き、すべての表示ボタンなどを選択して、動的に配置されるように設定します(ルーラータブを使用)。伸びるように窓をセットすることにも注意してください。3.ビューをコーディングする場合は、場所とサイズが動的に設定されていることを確認してください。
「自動レイアウト」には下位互換性がないため、iOS6より前のバージョンのiOSでは実行されないことに注意してください(単にクラッシュします)。ゼロから始める場合はおそらく便利ですが、あまり良くない古いアプリの場合は便利です。
Default-568h@2x.png という名前の新しい起動イメージをプロジェクトに追加してみましたか?
考えられる解決策の 1 つ (おそらく最善の解決策ではありません) は、画面サイズに応じて異なる .xib ファイルをロードすることです。このようにして、以前の iOS バージョン (<6.0) との互換性を維持できます。代わりに、適切な .xib ファイルを選択するカテゴリを追加できます。initWithNibName:
@implementation UIViewController (iPhone5Support)
-(id) initAutomaticallyWithNibName:(NSString *)nibNameOrNil orIOS6NibName:(NSString*) IOS6NibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
BOOL isiPhone5 = CGSizeEqualToSize([[UIScreen mainScreen] preferredMode].size,CGSizeMake(640, 1136));
if (isiPhone5==NO) {
self = [self initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
} else {
self = [self initWithNibName:IOS6NibNameOrNil bundle:nibBundleOrNil];
if (self==nil) { NSLog(@" initAutomaticallyWithNibName ERROR - nil for io6 nib name"); }
}
return self;
}
@end
そのように使用します:
UIViewController *controller = [[UIViewController alloc] initAutomaticallyWithNibName:@"UIViewControllerXibName" orIOS6NibName:@"UIViewControllerXibName_4inch" bundle:nil];
(同じコントローラに対して 2 つの xib ファイルを作成することを忘れないでください)