私のプロジェクトが iOS バージョン 4.3 以降をサポートしている場合、iOS6 でのみ自動レイアウトを有効にし、それより前のバージョンでは無効にするにはどうすればよいですか?
質問する
717 次
2 に答える
3
ストーリーボードを使用している場合は、2 つのストーリーボードを作成します。1 つは自動レイアウトをオンにし、もう 1 つは自動レイアウトをオフにします。確認する 1 つの方法は、OS のバージョンに基づいていずれかをロードすることです。
この小さなマクロを使用しました
#define SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(v) ([[[UIDevice currentDevice] systemVersion] compare:(v) options:NSNumericSearch] != NSOrderedAscending)
これも機能するはずです(場合によっては、上記よりも優れている可能性があります):
if ([NSLayoutConstraint class]) {
// >= 6.0
} else {
// < 6.0
}
そして、私のappDelegateで:
UIStoryboard *mainStoryboard = nil;
if (SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO(@"6.0"))
{
mainStoryboard = [UIStoryboard storyboardWithName:@"AutoLayoutStoryboard" bundle:nil];
}
else
{
mainStoryboard = [UIStoryboard storyboardWithName:@"NoAutoLayoutStoryboard" bundle:nil];
}
//load initial view controller
UIViewController *rootView = [mainStoryboard instantiateInitialViewController];
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.window.rootViewController = rootView;
[self.window makeKeyAndVisible];
追加: ペン先を使用していて、iOS6 のみで自動レイアウトを有効にしたい場合は、自動レイアウトをオンにしてストーリーボード (またはペン先) を作成し、上記のバージョン チェックを使用してそれらをロードできます。
于 2013-01-17T04:10:07.183 に答える
1
自動レイアウトと制約のコードを記述する前に、2 つの xib ファイルを使用するか、プログラムでチェックする必要があります。
于 2013-01-17T03:53:37.170 に答える