Iphone: получить текущие размеры экрана или размеры экрана - PullRequest
32 голосов
/ 06 января 2011

Здравствуйте, я хочу получить ширину и высоту моего основного вида. Я хочу правильное значение в ландшафтном или портретном режиме. Я пробовал следующее:


  NSLog(@"aaa %f", [UIScreen mainScreen].applicationFrame.size.width);
  NSLog(@"zzz %f", self.view.frame.size.width);

Они дают 300 в альбомной и 320 в портретном режиме, да, это больше в портретном режиме. Итак ... мой взгляд занимает весь экран (- строка состояния), поэтому я ожидаю 480 в ландшафтном режиме и 320 в портретном режиме. Что случилось с остальными пикселями. Должен ли я жестко закодировать эти значения? Спасибо.

Ответы [ 3 ]

99 голосов
/ 06 января 2011

У вас работает какая-либо из следующих строк?

[[UIScreen mainScreen] bounds].size.height
[[UIScreen mainScreen] bounds].size.width

Полагаю, вы можете вычесть высоту строки состояния?Может быть, я не понимаю ваш вопрос

9 голосов
/ 06 января 2011

Попробуйте это:

UIWindow* window = [UIApplication sharedApplication].keyWindow;
NSLog(@"%f",window.frame.size.width);
6 голосов
/ 25 сентября 2014

Полезные макросы, которые дадут вам правильный размер в зависимости от ориентации устройства:

#define SCREEN_WIDTH ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.width : [[UIScreen mainScreen] bounds].size.height)
#define SCREEN_HEIGHT ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.height : [[UIScreen mainScreen] bounds].size.width)
...