Принудительно изменить ориентацию для ipad/iphone в rubymotion

У меня есть универсальное приложение iOS, и мне нужно использовать его с:

  • Альбомная левая или альбомная правая для iPad

  • Портрет для iPhone

Возьмем, к примеру, iPad. Мне нужно заставить приложение открываться в ландшафтном режиме, даже если устройство пользователя находится в портретном режиме. Это работало безупречно, когда приложение было только для iPad, а rakefile использовал эту настройку:

app.interface_orientations = [:landscape_left, : landscape_right]

К сожалению, теперь, когда это удалено, приложение по умолчанию отображается в портретном режиме. Я попытался изменить это, перезаписав следующие методы в UIViewController.rb. Это работает на симуляторе, но не на моем устройстве:

  def shouldAutorotate
    # Block AutoRotation if the interfaces is CORRECT
    # Else allow IT
    if Device.ipad? # BubbleWrap gem method 
      if App.shared.interfaceOrientation == UIInterfaceOrientationLandscapeLeft
        return false
      elsif App.shared.interfaceOrientation == UIInterfaceOrientationLandscapeRight
        return false
      else
        return true
      end
    elsif Device.iphone?
      if App.shared.interfaceOrientation == UIInterfaceOrientationPortrait
        return false
      else
        return true
      end
    end
  end

  def viewDidAppear(animated)
    # Change the orientation after the view Appeared
    if Device.ipad?
      App.shared.setStatusBarOrientation(UIInterfaceOrientationLandscapeLeft)
    elsif Device.iphone?
      App.shared.setStatusBarOrientation(UIInterfaceOrientationPortrait)
    end
  end

Я пробовал много решений, и ни одно из них не работает так, как я хочу.

Спасибо, Влад


person vladCovaliov    schedule 05.11.2013    source источник


Ответы (1)


Чтобы попытаться упростить все, вы можете использовать оболочку motion-schemes, которая позволит вам настроить различные параметры. для каждого устройства, что означает, что вы можете вернуться к простоте app.interface_orientations и избежать всех хакерских атак.

person FluffyJack    schedule 11.12.2013