2

私のプロジェクトが iOS バージョン 4.3 以降をサポートしている場合、iOS6 でのみ自動レイアウトを有効にし、それより前のバージョンでは無効にするにはどうすればよいですか?

4

2 に答える 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 に答える