Предпочтительный способ установки кадра во время выполнения для различной ориентации
У меня есть две разные спецификации интерфейса для моего приложения для iOS.
У меня проблемы с изменением ориентации (Upsidedown не поддерживает) для следующего сценария.
К вашему сведению: я использую с помощью self.view.frame.size.width
чтобы установить ширину для пользовательского интерфейса и определить изменение ориентации я использую UIDeviceOrientationDidChangeNotification
1. Изменить ориентацию на ландшафт
2. изменить ориентацию вверх (не устанавливать ни одного кадра)
3. изменить ориентацию на портрет напрямую (настройка рамки для портретного режима)
После выполнения этих шагов мой кадр пользовательского интерфейса становится неуместным.
Я получаю ширину 568 для портретного режима.
Пожалуйста, предложите мне лучший способ решить эту проблему.
2 ответа
Вы перечисляете изменения ориентации вашего устройства, и вам нужно разрешить поворот пользовательского интерфейса и слушать его с
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
//update your view's subviews
}
обратите внимание, что UIDeviceOrientation отличается от UIInterfaceOrientation
чтобы разрешить поворот интерфейса, добавьте это в контроллер вида и убедитесь, что в списке проектов вы поддерживаете ландшафт и портрет в ключе "Поддерживаемые ориентации интерфейса".
- (BOOL)shouldAutorotate {
return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
return UIInterfaceOrientationMaskAllButUpsideDown;
}
Не стоит менять self.view
кадр при вращении, потому что его bound
обрабатываются UIViewController
логика вращения
Вы можете использовать willRotateToInterfaceOrientation:duration:
а также didRotateFromInterfaceOrientation:
делегировать методы для ручного вращения.