マップ アプリケーションにストーリーボードを使用しています。が無効になってMKMapview
いる場合は表示されません。有効にすると、アプリがクラッシュします。Autolayout
Autolayout
iPad(ios5)
2 に答える
Autolayout は IOS 6 の機能です。そのため、iOS 5 を実行していると言うと、その理由で iPad でクラッシュします。
最小要件を iOS 5 に設定し (既に完了していると思います)、iOS5 に関連する機能のみを使用します。このアプリは、iOS 6 デバイスを使用しているユーザーに対しても引き続き実行されます:-)
また、@msgambelが言ったように、コードを投稿できれば、私たちがあなたを助けるのがより簡単になります. 問題がストーリーボード関連のものにあると思われる場合は、スクリーンショットを投稿してください。
iOS 5 をサポートしたい場合は、ストーリーボード ファイルで Autolayout を使用できません。したがって、iOS 5 では、すべてのビュー要素を古い方法で配置する必要があります。iOS 6 で制約を使用するには、コードで iOS 6 のすべての制約設定を行うことができます。
次のマクロを使用して、iOS 6 を確認できます。
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:v options:NSNumericSearch] != NSOrderedAscending)
そして、ViewController をセットアップするときに、iOS 6 を確認する必要があります。
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) {
// code here
}
制約をビューにバインドします。ここで、制約に関する小さなチュートリアルを見つけることができます。
Storyboard または xib ファイルで Autolayout を使用する場合は、iOS 6 用の Storyboard と iOS 5 用の Storyboard を、iOS 6 用と iOS 5 用の xib ごとにそれぞれ作成する必要があります。もちろん違います。ビューの設定が完了したら、iOS バージョンを確認し、ビューの正しいストーリーボードと xib ファイルをそれぞれロードする必要があります。
ストーリーボードの場合、インスタンス化コードは次のようになります。
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) {
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"iOS6Storyboard" bundle:nil];
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"myViewController"];
[self presentViewController:vc animated:YES completion:NULL];
} else {
UIStoryboard *sb = [UIStoryboard storyboardWithName:@"iOS5Storyboard" bundle:nil];
UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"myViewController"];
[self presentViewController:vc animated:YES completion:NULL];
}
すべてのビューに xib を使用する場合は次のようになります。
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0")) {
ViewController *viewController = [[ViewController alloc] initWithNibName:@"ViewControlleriOS6" bundle:nil];
[self.navigationController pushViewController:viewController animated:YES];
} else {
ViewController *viewController = [[ViewController alloc] initWithNibName:@"ViewControlleriOS5" bundle:nil];
[self.navigationController pushViewController:viewController animated:YES];
}
もちろん、xib ViewController はモーダルで表示することもでき、ストーリーボード ViewController はナビゲーション コントローラーでプッシュすることもできます。