如果我的项目支持 iOS 4.3 及更高版本,如何仅在 iOS6 中启用自动布局,但在较低版本中禁用它?
问问题
717 次
2 回答
3
如果您使用故事板,请创建两个故事板,一个打开自动布局,另一个关闭自动布局。然后一种检查方法是根据操作系统版本加载任何一个。
我用了这个小宏
#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];
添加:如果您使用的是 nib,并且只想为 iOS6 启用自动布局,您可以创建一个启用自动布局的故事板(或 nib),并使用上述版本检查加载它们
于 2013-01-17T04:10:07.183 回答
1
要么你应该使用两个 xib 文件,要么你应该在编写自动布局和约束代码之前以编程方式检查它。
于 2013-01-17T03:53:37.170 回答