Подтвердить что ты не робот

Метод, вызванный изменением ориентации

Является ли здесь способ запуска метода при изменении ориентации устройств iOS?

Я хотел бы изменить только некоторые ориентации объектов на экране, а не другие.

Какие делегаты я использую и т.д.

Приветствия -А новичок

4b9b3361

Ответ 1

Зависит от того, когда вы хотите реагировать:

Если перед вращением, переопределить из UIViewController:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
 // do something before rotation
}

Если вы хотите выполнить что-то после вращения:

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
 // do something after rotation
}

Справка:

http://developer.apple.com/library/ios/documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html#//apple_ref/occ/instm/UIViewController/willRotateToInterfaceOrientation:duration:

Ответ 2

UIDevice posts UIDeviceOrientationDidChangeNotification

UIApplication posts UIApplicationWillChangeStatusBarOrientationNotification и UIApplicationDidChangeStatusBarOrientationNotification и имеет связанный обратный вызов делегата для каждого.

UIViewController получает несколько связанных с ориентацией вызовов, вызванных уведомлением UIDevice, если контроллер представления является частью иерархии контроллера, управляемой окном.

Если вы уже используете UIViewController, выполните некоторые из связанных с ориентацией методов, иначе зарегистрируйтесь для уведомлений UIDevice. Самый важный метод UIViewController - shouldAutorotateToInterfaceOrientation, потому что если return NO, другие не вызываются.

Ответ 3

willRotateToInterfaceOrientation: это метод, который вы, возможно, смотрите. Прочитайте это.

Ответ 4

UIViewController отправляются willRotateToInterfaceOrientation:duration: просто перед вращением и didRotateFromInterfaceOrientation: после вращения.

Чтобы настроить дополнительные анимации, используйте willAnimateRotationToInterfaceOrientation:duration: или willAnimateFirstHalfOfRotationToInterfaceOrientation:duration:, didAnimateFirstHalfOfRotationToInterfaceOrientation: и willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration:. Последние используются для двухступенчатой ​​анимации, которую вы обычно используете, когда у вас есть представления верхнего или нижнего колонтитула, которые перемещаются за кадром для основной анимации перехода.

Ответ 5

Моя песочница: https://github.com/comonitos/programatical_device_orientation

Решение легко:

в интерфейсе (h файл):

BOOL rotated;

в реализации (файл m):

  • переписать

    - (BOOL) shouldAutorotateToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation {   возврат повернут; }

2 вызов [самонастройка]

-(void) setup 
{
   rotated = YES;
   [[UIDevice currentDevice] setOrientation:UIDeviceOrientationLandscapeLeft];
   rotated = NO;
}

Ответ 6

Просто используйте этот фрагмент кода, чтобы проверить изменения ориентации.

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
    if UIDevice.currentDevice().orientation.isLandscape.boolValue {
        print("Landscape")
    } else {
        print("Portrait")
    }
}