IPhone / IPad: Как получить ширину экрана программно?

Привет, мне интересно, есть ли способ получить ширину программно.

Я ищу что-то достаточно общее, чтобы разместить iphone 3gs, iphone 4, ipad. Кроме того, ширина должна изменяться в зависимости от того, является ли устройство портретным или альбомным (для ipad).

Кто-нибудь знает, как это сделать? Я искал какое-то время … спасибо!

Взгляните на UIScreen .

например.

CGFloat width = [UIScreen mainScreen].bounds.size.width; 

Взгляните на свойство applicationFrame, если вы не хотите включать строку состояния (не влияет на ширину).

UPDATE: Оказывается, UIScreen (-bounds или -applicationFrame) не учитывает текущую ориентацию интерфейса. Более правильный подход заключается в том, чтобы спросить ваш UIView о своих границах – если этот UIView был автоматически повернут с помощью controllerа View.

 - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { CGFloat width = CGRectGetWidth(self.view.bounds); } 

Если представление не будет автоматически повернуто с помощью controllerа просмотра, вам нужно будет проверить ориентацию интерфейса, чтобы определить, какая часть границ обзора представляет «ширину» и «высоту». Обратите внимание, что свойство frame даст вам прямой вид в пространстве координат UIWindow, который (по умолчанию) не будет учитывать ориентацию интерфейса.

 CGRect screen = [[UIScreen mainScreen] bounds]; CGFloat width = CGRectGetWidth(screen); //Bonus height. CGFloat height = CGRectGetHeight(screen); 

Это можно сделать в 3 строках кода :

 // grab the window frame and adjust it for orientation UIView *rootView = [[[UIApplication sharedApplication] keyWindow] rootViewController].view; CGRect originalFrame = [[UIScreen mainScreen] bounds]; CGRect adjustedFrame = [rootView convertRect:originalFrame fromView:nil]; 

Начиная с iOS 9.0 нет надежного ориентирования. Это код, который я использовал для приложения I для только портретного режима, поэтому, если приложение открыто в ландшафтном режиме, оно все равно будет точным:

 screenHeight = [[UIScreen mainScreen] bounds].size.height; screenWidth = [[UIScreen mainScreen] bounds].size.width; if (screenWidth > screenHeight) { float tempHeight = screenWidth; screenWidth = screenHeight; screenHeight = tempHeight; } 

Используйте этот код, это поможет

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

использовать:

 NSLog(@"%f",[[UIScreen mainScreen] bounds].size.width) ; 

Вот быстрый способ получить размеры экрана, это также учитывает текущую ориентацию интерфейса:

 var screenWidth: CGFloat { if UIInterfaceOrientationIsPortrait(screenOrientation) { return UIScreen.mainScreen().bounds.size.width } else { return UIScreen.mainScreen().bounds.size.height } } var screenHeight: CGFloat { if UIInterfaceOrientationIsPortrait(screenOrientation) { return UIScreen.mainScreen().bounds.size.height } else { return UIScreen.mainScreen().bounds.size.width } } var screenOrientation: UIInterfaceOrientation { return UIApplication.sharedApplication().statusBarOrientation } 

Они включены как стандартная функция в:

https://github.com/goktugyil/EZSwiftExtensions

  • Как добавить gradleиент к тексту UILabel, но не к фону?
  • Управление несколькими асинхронными соединениями NSURLConnection
  • Как я могу изменить NSArray в Objective-C?
  • Прокрутка двумя пальцами с помощью UIScrollView
  • Как скопировать объект в объекте c
  • Xcode - обновить текст метки ViewController с другого вида
  • Лучшая производительность с помощью libxml2 или NSXMLParser на iPhone?
  • Использование аутентификации AFNetworking и HTTP
  • Простое обнаружение движения iPhone
  • Как включить / выключить флэш-память iPhone?
  • всплывающее меню iPhone, как iPad popover?
  • Давайте будем гением компьютера.