我使用最新版本的XCode创建了一个新项目,并尝试记录我的应用程序的屏幕大小(以确定UI的设备类型)。我从我的iPhone 5运行以下代码:
NSLog(@"%f", [[UIScreen mainScreen] bounds].size.height);
这返回了480
,这是旧版iPhone系列的屏幕尺寸。我在模拟器中尝试了一下,发现同样的情况也出现了。我需要在项目中启用某些属性才能识别屏幕尺寸吗?
只有在5+设备上才会发生这种情况;如果我在iPad上运行游戏,它就可以识别1024的屏幕尺寸。
我知道这段代码过去是可行的。我以前制作过一个游戏,使用完全相同的方法,没有问题地检测到了屏幕尺寸,但那个游戏是在XCode 4.x中构建的。
附加信息:
我正在使用自定义视图控制器,在应用程序委托中使用以下代码创建:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
if([Global getDevice] == 1)
{
//iPhone 5+
self.window.rootViewController = [[FivePlus alloc] initWithNibName:nil bundle:nil];
}
else if([Global getDevice] == 2)
{
//iPhone 4S-
self.window.rootViewController = [[FourSMinus alloc] initWithNibName:nil bundle:nil];
}
else
{
//iPad
self.window.rootViewController = [[iPad alloc] initWithNibName:nil bundle:nil];
}
[[self window] makeKeyAndVisible];
// Override point for customization after application launch.
return YES;
}
Global.h文件中的getDevice方法:
+ (int)getDevice
{
if([[UIScreen mainScreen] bounds].size.height == 568 || [[UIScreen mainScreen] bounds].size.width == 568)
{
return 1;
}
else if(UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
return 3;
}
else
{
return 2;
}
}