Метод [UIDevice setOrientation:] - все еще отказано?
Я слышал, что использование [UIDevice setOrientation:]
может быть причиной отклонения приложения в Appstore. Есть ли проверенная информация об этом?
5 ответов
Это правильно - ваше приложение будет отклонено при использовании этого закрытого метода. Мы сделали это, мы получили отказ (и мы нашли обходные пути).
Метод предназначен для предоставления вам информации о физической ориентации устройства, никакое количество кодирования не изменит эту физическую ориентацию. Он устанавливается в зависимости от гироскопов / акселерометров, поэтому не имеет смысла сообщать устройству его ориентацию.
Если вы хотите изменить ориентацию интерфейса, вам следует обратиться к обратным вызовам UIViewController, которые позволяют вам определить это:
interfaceOrientation property
– shouldAutorotateToInterfaceOrientation:
+ attemptRotationToDeviceOrientation
– rotatingHeaderView
– rotatingFooterView
– willRotateToInterfaceOrientation:duration:
– willAnimateRotationToInterfaceOrientation:duration:
– didRotateFromInterfaceOrientation:
Если метод не задокументирован, не используйте его. Использование недокументированных методов приведет к отклонению. Это так же просто, как проверка документации Apple.
В этом случае в документации говорится:
@property (nonatomic, readonly) UIDeviceOrientation orientation
Текущее (iOS 5) определение:
@property (nonatomic, readonly) UIDeviceOrientation orientation
Так что даже если есть сеттер (setOrientation:
или же .orientation =
) это был бы частный API, поскольку официальная документация утверждает, что его не существует. А использование частного API заставит вас отказаться.
Использовать этот:
- (UIInterfaceOrientation) extendedInterfaceOrientationForPresentation{ return UIInterfaceOrientationPortrait; }