IPhone / IPad: Как получить ширину экрана программно?
Привет, мне интересно, есть ли способ получить ширину программно.
Я ищу что-то достаточно общее, чтобы разместить iphone 3gs, iphone 4, ipad. Кроме того, ширина должна изменяться в зависимости от того, является ли устройство портретным или альбомным (для ipad).
Кто-нибудь знает, как это сделать? Я искал какое-то время … спасибо!
- Содержимое HTML соответствует UIWebview без масштабирования
- UITextView с подсветкой синтаксиса
- Какова стоимость использования автореферата в cocoa?
- Тип аксессуара UITableViewCell, проверенный на доступ и установка других непроверенных
- Получить нажатие кнопки внутри UITableViewCell
- Передача параметров addTarget: действие: forControlEvents
- Ширина пикселя текста в UILabel
- `` соглашение
- Как я могу отложить вызов метода на 1 секунду?
- захват себя в этом блоке, вероятно, приведет к циклу сохранения
- Сортировка NSArray пользовательских объектов по их свойствам NSDate
- Может ли iPhone приложение блокировать телефонные звонки?
- Невозможно добавить элементы в NSMutableArray ivar
Взгляните на 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 }
Они включены как стандартная функция в: