0

私は現在Rubymotionで書いているiosアプリを持っています。UIViewController を常に縦向きで表示し、横向きに回転しないように設定しようとしています。他の uiviewcontroller にはすべての向きが必要なため、rakefile で縦向きのみを指定することはできません。私のコードについては以下を参照してください。

class ConfirmationController < UIViewController

def viewDidLoad
    super
    self.view.backgroundColor = UIColor.blueColor
end

def shouldAutorotate
  true
end

def supportedInterfaceOrientations
  UIInterfaceOrientationMaskPortrait
end

def preferredInterfaceOrientationForPresentation
  UIInterfaceOrientationMaskPortrait
end

ご覧のとおり、preferredInterfaceOrientation を設定しようとしていますが、デバイスを回転させると横向きに変わります。これを Rubymotion で設定する方法について何かアイデアはありますか?

4

3 に答える 3

3

Rubymotion デベロッパー センターから:

サポートされているインターフェイスの向き。値は、:portrait、:landscape_left、:landscape_right、および :portrait_upside_down の 1 つ以上のシンボルの配列である必要があります。デフォルト値は [:portrait, :landscape_left, :landscape_right] です。

アプリ全体で横向きの向きをロックする必要がある場合はinterface_orientations、Rakefile の下で設定できます。

Motion::Project::App.setup do |app|
  app.name = 'Awesome App'
  app.interface_orientations = [:landscape_left,:landscape_right]
end
于 2013-09-03T15:14:16.457 に答える
1

preferredInterfaceOrientationはプロパティではなく、ビューの動作を変更するために実装する必要があるメソッドです。

したがって、設定する行を削除してpreferredInterfaceOrientation、ViewController に次のようなものを追加する必要があります。

class ConfirmationController < UIViewController
    ...
    ...

    def supportedInterfaceOrientations
        UIInterfaceOrientationMaskLandscape
    end

    def preferredInterfaceOrientationForPresentation
        UIInterfaceOrientationLandscapeRight
    end

    ...
    ...
end

これがどのように機能するかの詳細については、Apple のドキュメントをご覧ください。

于 2013-07-03T12:38:15.733 に答える
0

調査を行った結果、問題の原因は UINavigationController が rootView であることがわかりました。UINavigationController から継承した名前付きコントローラーを追加し、デフォルトの UINavigation 設定をオーバーライドして、topViewController に従って変更する必要がありました。

AppDelegate.rb

class TopNavController < UINavigationController

  def supportedInterfaceOrientations
    self.topViewController.supportedInterfaceOrientations
  end

  def preferredInterfaceOrientationForPresentation
    self.topViewController.preferredInterfaceOrientationForPresentation
  end
end

main_controller = MainScreenController.alloc.initWithNibName(nil, bundle: nil)
@window.rootViewController= TopNavController.alloc.initWithRootViewController(main_controller)

UIViewController

def shouldAutorotate
  true
end

def supportedInterfaceOrientations
  UIInterfaceOrientationMaskLandscapeLeft | UIInterfaceOrientationMaskLandscapeRight
end

def preferredInterfaceOrientationForPresentation
  UIInterfaceOrientationLandscapeLeft
end
于 2014-10-06T20:56:04.930 に答える