有两个storyboard分别制定给iPhone5和iPhone4的尺寸。如何让代码检测ios版本?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// 1
UIStoryboard * mainStoryboard = nil ;
if ( SYSTEM_VERSION_GREATER_THAN_OR_EQUAL_TO ( @ "6.0" ) ) {
mainStoryboard = [ UIStoryboard storyboardWithName : @ "iPhones6.0" bundle : nil ] ;
} else {
mainStoryboard = [ UIStoryboard storyboardWithName : @ "iPhones3-5" bundle : nil ] ;
}
// 2
self.window = [ [ UIWindow alloc ] initWithFrame : [ [ UIScreen mainScreen ] bounds ] ] ;
self.window.rootViewController = [ mainStoryboard instantiateInitialViewController ] ;
[ self.window makeKeyAndVisible ] ;
return YES;
}
判断是否为iphone5的宏
#define IPHONE5 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : 0)
这个不对吧,版本代表不了手机型号,为何不去获取物理屏幕大小好了呢?
其实一个storyboard就可以适配iphone5,iphone4的尺寸。在storyboard中可以设置UI元素的约束来定位位置,这里需要用到NSLayoutConstrant 技术