2013-08-23 102 views
0

我想從服務器上下載一張圖片,並將其設置爲iphone4s的全屏,我使用UIScreen *mainScreen = [UIScreen mainScreen];並使用此主屏幕來獲取大小(960x640)。當應用程序啓動時,我將代碼插入AppDelegate。爲什麼我的UIScreen和UIWindow尺寸不匹配?

if (im!=nil){ 
    UIImageView *splashScreen = [[UIImageView alloc] initWithImage:im]; 
    [self.window addSubview:splashScreen]; 
    [UIView animateWithDuration:3 animations:^{splashScreen.alpha = 0.99;} 
        completion:(void (^)(BOOL)) ^{ 
         [splashScreen removeFromSuperview]; 
    }]; 
} 

我注意到的大小是不正確的話,我註銷self.window的大小,發現窗口的大小是小320x480。這怎麼發生的?

這裏是我得到的尺寸:

UIScreen *mainScreen = [UIScreen mainScreen]; 
UIScreenMode *ScreenMode = [mainScreen currentMode]; 
CGSize size = [ScreenMode size]; 
CGFloat screenWidth = size.width; 
CGFloat screenHeight = size.height; 
+1

顯示如何從'UIScreen'獲得大小。尺寸應該是點(而不是像素),所以兩者都應該是320x480。 – rmaddy

+0

使用'UIScreen bounds'來獲取像'UIWindow'一樣大小的點。 'UIScreenMode'以像素爲單位。在這兩個屬性的文檔中明確指出了這一點。 – rmaddy

回答

1

這點與像素之間的差異。

UIScreen以像素爲單位返回大小,但是UIKit會處理點。下面是關於這個主題的一些Apple文檔: https://developer.apple.com/library/ios/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/WindowsandViews/WindowsandViews.html#//apple_ref/doc/uid/TP40009503-CH2-SW15

+0

'UIScreen'不會以像素爲單位給出尺寸。 「UIScreen bounds」和「UIScreen applicationFrame」都是關鍵點。它是以像素爲單位的'UIScreenMode'。這是一個重要的區別。 – rmaddy