Является ли здесь способ запуска метода при изменении ориентации устройств iOS?
Я хотел бы изменить только некоторые ориентации объектов на экране, а не другие.
Какие делегаты я использую и т.д.
Приветствия -А новичок
Является ли здесь способ запуска метода при изменении ориентации устройств iOS?
Я хотел бы изменить только некоторые ориентации объектов на экране, а не другие.
Какие делегаты я использую и т.д.
Приветствия -А новичок
Зависит от того, когда вы хотите реагировать:
Если перед вращением, переопределить из UIViewController:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
// do something before rotation
}
Если вы хотите выполнить что-то после вращения:
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
// do something after rotation
}
Справка:
UIDevice posts UIDeviceOrientationDidChangeNotification
UIApplication posts UIApplicationWillChangeStatusBarOrientationNotification и UIApplicationDidChangeStatusBarOrientationNotification и имеет связанный обратный вызов делегата для каждого.
UIViewController получает несколько связанных с ориентацией вызовов, вызванных уведомлением UIDevice, если контроллер представления является частью иерархии контроллера, управляемой окном.
Если вы уже используете UIViewController, выполните некоторые из связанных с ориентацией методов, иначе зарегистрируйтесь для уведомлений UIDevice. Самый важный метод UIViewController - shouldAutorotateToInterfaceOrientation, потому что если return NO, другие не вызываются.
willRotateToInterfaceOrientation: это метод, который вы, возможно, смотрите. Прочитайте это.
UIViewController отправляются willRotateToInterfaceOrientation:duration: просто перед вращением и didRotateFromInterfaceOrientation: после вращения.
Чтобы настроить дополнительные анимации, используйте willAnimateRotationToInterfaceOrientation:duration: или willAnimateFirstHalfOfRotationToInterfaceOrientation:duration:, didAnimateFirstHalfOfRotationToInterfaceOrientation: и willAnimateSecondHalfOfRotationFromInterfaceOrientation:duration:. Последние используются для двухступенчатой анимации, которую вы обычно используете, когда у вас есть представления верхнего или нижнего колонтитула, которые перемещаются за кадром для основной анимации перехода.
Моя песочница: 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;
}
Просто используйте этот фрагмент кода, чтобы проверить изменения ориентации.
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
if UIDevice.currentDevice().orientation.isLandscape.boolValue {
print("Landscape")
} else {
print("Portrait")
}
}