2016-08-04 43 views
3

嗨,我是編程啓動RootViewController的(門戶只無景觀]UIScreen mainScreen界給出錯誤的大小

這是代碼使用

CGRect appFrame = [[UIScreen mainScreen] bounds]; 

但它不會給正確的大小。在(削減屏幕底部)

只有這個代碼提供正確的

CGRect appFrame = [UIScreen mainScreen].applicationFrame 

但是這款C頌會給貶值的警告(applicationFrame折舊)

(我的模擬器是IOS 9.3)

如何解決這一問題?任何幫助非常感謝!謝謝!

這裏使用[UIscreen mainscreen].bounds

enter image description here

時是screenshoot這裏是[UIscreen mainscreen] .applicationFrame

enter image description here

回答

2

您可以執行以下操作。

CGRect rect = [UIScreen mainScreen].bounds; 

CGRect screenFrame = CGRectMake(0, [[UIApplication sharedApplication] statusBarFrame].size.height, rect.size.width, rect.size.height - [[UIApplication sharedApplication] statusBarFrame].size.height); 

現在你可以使用這個screenFrame,我希望這會解決你的問題。

+1

嗨,我們需要減去rect.size.height - [[UIApplication sharedApplication] statusBarFrame] .size.height。僅使用rect.size.height時,我找到了相同的結果。那是對的嗎? –

+0

是因爲,它會帶你的畫面[[UIApplication的sharedApplication] statusBarFrame] .size.height下來,所以不會降低屏幕的下部將被裁剪。 –

+1

謝謝!邊界包括狀態欄,所以我們需要一些計算來獲得實際的框架從邊界 –

3

[[UIScreen mainScreen] bounds]給出整個窗口的正確的尺寸,但它包括狀態欄的大小。如果您需要狀態欄的大小(可以減去其高度),則應使用[[UIApplication sharedApplication] statusBarFrame]來獲取狀態欄的框架。導航欄和標籤欄一般有44的高度所以,使用CGRectMake()如果您需要爲您的視圖中呈矩形:

CGRect frame_screen = [[UIScreen mainScreen] bounds]; 
CGRect frame_view = CGRectMake(0,0,frame_screen.size.width,frame_screen.size.height - [[UIApplication sharedApplication] statusBarFrame].size.height); 

注意的CGRectMake最後一個參數是高度,通常你可以減去44的標籤欄或導航欄。

編輯:嘗試記錄[UIScreen mainScreen].applicationFrame[[UIScreen mainScreen] bounds]控制檯,看看它們之間有什麼區別。類似於

CGRect frame_screen = [[UIScreen mainScreen] bounds]; 
NSLog(@"x: %f, y: %f, width: %f, height: %f",frame_screen.origin.x,frame_screen.origin.y,frame_screen.size.width,frame_screen.size.height); 
CGRect frame_application = [UIScreen mainScreen].applicationFrame 
NSLog(@"x: %f, y: %f, width: %f, height: %f",frame_application.origin.x,frame_application.origin.y,frame_application.size.width,frame_application.size.height); 

然後使用該信息使[[UIScreen mainScreen] bounds框架如何您需要它。

+0

嗨使用你的建議,我仍然得到削減在底部。可能需要啓動0,0的一些計算,因爲在底部減少不上邊 –

+1

不知道爲什麼,我需要移動Y方向這樣做正確的CGRect appFrame = CGRectMake(0,[[UIApplication的sharedApplication] statusBarFrame] .size.height,frame_screen.size.width,frame_screen.size.height - [[UIApplication sharedApplication] statusBarFrame] .size.height); –

+0

你可以在你的問題中加入截圖嗎?我不認爲我很理解問題所在。也許你可以添加更多的代碼來解決這個問題? –

-1

確保已將所有分辨率開機畫面上你要跟的應用Images.xcassets `

請採取屏幕截圖來看看我附

`enter image description here

CGRect appFrame = [[UIScreen mainScreen] bounds]; //這是 獲取屏幕尺寸的正確方法

+0

你好,這是我原來的launchImage:https://開頭postimg。 org/image/tow29iwnr/ –

+0

當嘗試添加1個更多的設置我得到了這些巨大的類別。我們是否需要添加添加? https://postimg.org/image/91dedwqgh/ –

+1

發射圖像與此問題無關。 –

相關問題