Изменение модальной ориентации UIView на альбомный режим на iPhone - PullRequest
0 голосов
/ 05 мая 2009

У меня модальный вид, отображаемый поверх контроллера панели вкладок, ориентация контроллера панели вкладок и мой модальный вид в настоящее время находятся в портретном режиме, мне нужно только изменить ориентацию моих модальных видов на альбомный режим, Я попытался использовать UIDevice Orientation, но безуспешно, он работает только тогда, когда .plist имеет UIDeviceOrientationKey, и я не хочу, чтобы все мое приложение работало в альбомном режиме. во-вторых, я даже попытался использовать UIApplication setStatusBarOrientation, но мое представление не отвечает на него, то есть поворачивается только мое устройство (симулятор), но представление все еще остается в портретном режиме, использование аффинного преобразования в UIView создает пустое представление, мое представление создается через XIB.

Пожалуйста, помогите

Спасибо, Ракеш

Ответы [ 2 ]

1 голос
/ 21 января 2010

Я использовал это , и он хорошо работает с некоторыми изменениями.

0 голосов
/ 08 декабря 2009

До сегодняшнего дня я использовал следующее решение:

-(void)setOrientation:(UIInterfaceOrientation)orientation
{
 SEL rotation = @selector(_setRotatableViewOrientation:duration:);
 NSMethodSignature * methodSignature = [window methodSignatureForSelector:rotation];
 if (methodSignature)
 {
  NSInvocation * ivc = [NSInvocation invocationWithMethodSignature:methodSignature];
  [ivc setTarget:window];
  [ivc setSelector:rotation];
  // arg0 will be self, 1 will be cmd_ (current method selector)
  [ivc setArgument:&orientation atIndex:2];
  double duration = 0.4;
  [ivc setArgument:&duration atIndex:3];
  [ivc invoke];
 }
}

-(void)normalizeOrientation
{
 UIDeviceOrientation dOrientation = [UIDevice currentDevice].orientation;

 int orientation = -1;

    switch(dOrientation)
    {
        case UIDeviceOrientationPortrait:
            orientation = UIInterfaceOrientationPortrait;
            break;
        case UIDeviceOrientationPortraitUpsideDown:
            orientation = UIInterfaceOrientationPortraitUpsideDown;
            break;
        case UIDeviceOrientationLandscapeRight:
            orientation = UIInterfaceOrientationLandscapeLeft;
            break;
        case UIDeviceOrientationLandscapeLeft:
            orientation = UIInterfaceOrientationLandscapeRight;
            break;
    }

    if (orientation != -1 && orientation != tabBarController.interfaceOrientation)
        [self setOrientation:orientation];
}

, но официальный AppStore не будет принимать новые версии моего приложения из-за _setRotatableViewOrientation: продолжительность: переход: toView: API не документирован.

Так что будьте внимательны при использовании его в своих коммерческих проектах! Новая автоматическая проверка API Apple отклонит ваше приложение!

...