Веди меня по UIDevice currentDevice - PullRequest
1 голос
/ 04 января 2011

Я использую следующий код для установки ориентации устройства

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

, когда я использовал, я получил предупреждение, и я нашел следующий код, чтобы исправить это предупреждение.

@interface UIDevice (MyPrivateNameThatAppleWouldNeverUseGoesHere)
- (void) setOrientation:(UIInterfaceOrientation)orientation;
@end

Теперь я хотел бы знать, что ...

Может ли магазин приложений принять этот код в приложении?

Спасибо за любую помощь!

Ответы [ 3 ]

6 голосов
/ 04 января 2011

о боже, нет. Вы получаете предупреждение, потому что это не свойство readwrite; простое добавление категории, которая объявляет метод, не позволит вам установить ориентацию. AppStore не только не примет это, но и вылетает при первом вызове, так как нет доступа. (что ж, это, вероятно, завершится сбоем. Здесь может быть недокументированный API, и в этом случае вы просто получите отказ).

2 голосов
/ 04 января 2011

Если вы пытаетесь программно повернуть представление, вы должны посмотреть на shouldAutorotateToInterfaceOrientation , и если вы просто хотите, чтобы приложение имело определенную ориентацию, попробуйте использовать набор UIInterfaceOrientation в plist.

Еще один полезный пост: Принудительное изменение UIInterfaceOrientation на iPhone

0 голосов
/ 04 января 2011

Вместо установки ориентации, правильный способ сделать это - заставить ваше приложение слушать, когда пользователь поворачивает телефон, а затем вернуть YES или NO, чтобы указать, что приложение должно фактически вращаться (то есть всегда возвращать NOесли вы хотите, чтобы приложение всегда оставалось в своем исходном состоянии.) Метод shouldAutorotateToInterfaceOrientation: вызывается автоматически при каждом изменении ориентации пользователя.

Например, в вашем контроллере представления внедрите метод, чтобы разрешить только телефондля использования в альбомной ориентации вправо / влево:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    if (UIDeviceOrientationIsLandscape) { return YES };
    return NO;
}

Вы также захотите установить ориентацию вашего приложения по умолчанию (чтобы она не запускалась в портретном режиме), добавив тег UIInterfaceOrientation к информации вашего приложения.Файл .plist со значением UIInterfaceOrientationLandscapeRight.В противном случае значение по умолчанию - портретное, и пользователю придется наклонить телефон, чтобы перевести его в ожидаемую ориентацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...