какой метод будет вызван, когда мы начнем вращать устройство и после его завершения - PullRequest
24 голосов
/ 16 сентября 2011

Я хочу, чтобы программно определить процесс вращения на iPad. В этом случае я хочу установить логическое значение в yes, когда вращение начнется, и установить его в false после окончания вращения. Есть ли метод, который вызывается, когда вращение начнется, и вращение закончилось?

Ответы [ 4 ]

36 голосов
/ 16 сентября 2011

Из документов Apple:

Отправляется в контроллер представления непосредственно перед тем, как интерфейс пользователя начинает вращаться.

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

Отправляется в контроллер представления после вращения пользовательского интерфейса:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

Подробнее здесь: Справочник по классам UIViewController -> Ответ на события вращения представления

ВНИМАНИЕ: Это устарело, см этот пост

28 голосов
/ 22 сентября 2014

Для новичков в этом посте методы, предложенные Nekto, устарели в iOS 8. Apple предлагает использовать:

-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator

Вы можете использовать параметр "размер" как простой способ определить, будет ли он переходить в книжную или альбомную ориентацию.

т.е.

if (size.width > size.height)
{
    // Position elements for Landscape
}
else
{
    // Position elements for Portrait
}

Более подробная информация доступна в Документах .

19 голосов
/ 12 апреля 2016

Все вышеперечисленные методы (в ответе @Nekto) устарели в iOS8.0 и более поздних версиях.Источник: Библиотека разработчиков iOS

Начиная с iOS 8, все методы, связанные с ротацией, устарели .Вместо этого повороты обрабатываются как изменение размера представления контроллера представления и поэтому сообщаются с использованием viewWillTransitionToSize: withTransitionCoordinator: метод.Когда ориентация интерфейса изменяется, UIKit вызывает этот метод на корневом контроллере представления окна.Затем этот контроллер представления уведомляет свои дочерние контроллеры представления, распространяя сообщение по всей иерархии контроллера представления.

В iOS8 или более поздней версии вы можете использовать приведенный ниже метод.

0 голосов
/ 09 марта 2015

В протоколе UISplitViewController новый метод для iOS8:

- (void)splitViewController:(UISplitViewController *)svc willChangeToDisplayMode:(UISplitViewControllerDisplayMode)displayMode

Существует четыре режима отображения:

typedef enum UISplitViewControllerDisplayMode : NSInteger {
  UISplitViewControllerDisplayModeAutomatic,
  UISplitViewControllerDisplayModePrimaryHidden,
  UISplitViewControllerDisplayModeAllVisible,
  UISplitViewControllerDisplayModePrimaryOverlay,
} UISplitViewControllerDisplayMode;

НО этот метод будет НИКОГДА возврат Автоматически.

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