Метод [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; }
Другие вопросы по тегам