2013-08-23 3 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 и нашел размер окна 320х480. Как это произошло?

Вот как я получаю размеры:

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

Смежные вопросы