Ответ 1
Работает ли для вас одна из следующих строк?
[[UIScreen mainScreen] bounds].size.height
[[UIScreen mainScreen] bounds].size.width
Я полагаю, вы можете вычесть высоту строки состояния? Может быть, я не понимаю ваш вопрос.
Здравствуйте, я хочу получить ширину и высоту моего основного вида. Я хочу правильное значение в ландшафтном или портретном режиме. Я пробовал следующее:
NSLog(@"aaa %f", [UIScreen mainScreen].applicationFrame.size.width);
NSLog(@"zzz %f", self.view.frame.size.width);
Они дают 300 в пейзаже и 320 в портретном режиме, да, это больше в портретном режиме. Итак... мое представление занимает весь экран (- строка состояния), поэтому я ожидаю 480 в альбомном режиме и 320 в портретном режиме. Что случилось с остальными пикселями. Нужно ли мне жестко кодировать эти значения? Спасибо.
Работает ли для вас одна из следующих строк?
[[UIScreen mainScreen] bounds].size.height
[[UIScreen mainScreen] bounds].size.width
Я полагаю, вы можете вычесть высоту строки состояния? Может быть, я не понимаю ваш вопрос.
Попробуйте следующее:
UIWindow* window = [UIApplication sharedApplication].keyWindow;
NSLog(@"%f",window.frame.size.width);
Полезные макросы, которые дадут вам правильный размер на основе ориентации устройства:
#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)
Я думаю, что лучше всего использовать:
CGRect frame = [[UIScreen mainScreen] frameForOrientation:self.interfaceOrientation];
Предполагая, что я в приведенном выше примере является UIViewController. В любом случае метод frameForOrientation ожидает тип UIInterfaceOrientation.