Лучший способ определить ориентацию iPhone - PullRequest
0 голосов
/ 12 января 2012

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

-(BOOL) shouldautorotatetointerfaceorientation

Но есть две основные проблемы с этим

  1. При загрузке страницы должен быть вызван интерфейс tointerfaceorientation не менее 3 раз. Я хочу выполнить свой код только один раз.

  2. Даже когда я перехожу из viewController1 (стр. 1) в viewController2 (стр. 2) с помощью модального перехода, и я поворачиваю свой iphone на стр. 2, он все равно вызывает код autorate, который находится в моем viewcontroller1. Это очень странно.

В любом случае, в каком месте лучше всего размещать значки, ориентированные на мою ориентацию?

Ответы [ 3 ]

5 голосов
/ 12 января 2012

Единственная цель метода

-(BOOL) shouldautorotatetointerfaceorientation

- определить, какие ориентации поддерживаются.

Если вы хотите выполнять пользовательские действия при вращении, то вы хотите реализовать один или оба метода

-(void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)orientation duration:(NSTimeInterval)duration
1 голос
/ 12 января 2012

Вам необходимо создать подкласс UIView и переопределить -(void)layoutSubviews.Это сообщение будет вызываться при изменении ориентации или установке setNeedsToDisplay.Вы получите анимацию смены позиции для ваших подпредставлений.
Получить текущую ориентацию очень просто, как [[UIApplication sharedApplication] statusBarOrientation]

0 голосов
/ 12 января 2012

UIDevice.orientation;

Однако вы все равно должны правильно реализовывать уведомления от вращений пользователя. Если вы хотите избежать ненужного запуска кода несколько раз, просто запомните, какой была последняя ориентация, и выполняйте код только в том случае, если он изменился.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...