因此,我創建了一個包含最新版本XCode的新項目,並嘗試記錄我的應用程序的屏幕大小(以確定UI的設備類型)。UIScreen主屏幕邊界返回錯誤的大小
NSLog(@"%f", [[UIScreen mainScreen] bounds].size.height);
這回480
,這是舊的iPhone系列屏幕尺寸:我從我的iPhone 5運行下面的代碼。我在模擬器中嘗試過,發生了同樣的事情。是否有一些屬性需要在項目中啓用才能識別屏幕大小?
這隻發生在5個以上的設備上;如果我在iPad上運行遊戲,它會識別1024屏幕大小。
我知道這個代碼在過去有效。我使用完全相同的方法制作了一款遊戲,並且它在檢測屏幕尺寸方面沒有問題,但是這是在XCode 4.x中構建的。
附加信息:
我使用一個自定義視圖控制器,這是我在App代表創建具有以下代碼:
- (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;
}
}
+1 +1 +1 +1 +1 +1 +1 +1你不知道這是多麼有幫助。多麼奇怪的問題。哦,我的上帝.................... – Katushai
見http://stackoverflow.com/questions/24150359/is-uiscreen-mainscreen-bounds-size-becoming-orientation -dependent-in-ios8 – Bobjt
第二個視角適合我! –