Titanium MobileでiPhone&iPadの向きを変えた時の画面回転制御

Titanium MobileでiPhone/iPad両対応のユニバーサルアプリを作成する際、設定を変更しない限りは実機やiOSシミュレータで本体の向きを変更した時に、iPhoneでは縦方向のまま画面は回転しませんが、iPadでは回転するようになっています。

iPhoneで画面を回転できるアプリを作りたい時、逆にiPadで画面を回転させたくないアプリを作りたい時の設定方法についてです。

tiapp.xmlで設定する

tiapp.xmlで変更を行います。Titanium Studioでプロジェクト内のtiapp.xmlを開きます。

20121007-tiapp.png

ビューの下のタブからtiapp.xmlに切り替えます。

20121007-tiapp1.png

tiapp.xmlの編集画面に切り替わります。iphone要素の中を確認すると、orientations(方向)という要素があり、device属性が iphone、ipadそれぞれ用意されていることが確認できます。

20121007-orientations.png

device="iphone"側は、orientationが Ti.UI.PORTLAIT の1行のみだけ、そして、device="ipad"側はorientationは4行あります。それぞれの設定値の意味は以下の通りです。

  • Ti.UI.PORTRAIT … 縦置き(HOMEボタンが下側)
  • Ti.UI.UPSIDE_PORTRAIT … 縦置き(HOMEボタンが上側)
  • Ti.UI.LANDSCAPE_LEFT … 横置き(HOMEボタンが左側)
  • Ti.UI.LANDSCAPE_RIGHT … 横置き(HOMEボタンが右側)

tiapp.xmlの初期値としてiPhoneは縦置き(HOMEボタンが下側)のみ、iPadは4つの方向全てが設定されているため、iPhoneでは一切回転せず、iPadでは全方向に回転する、という動きになります。

つまり、iPhone/iPadともここで回転させたい、または回転させたくない方向について記述を増減させてあげればよい、ということになります。

ソースコード内で設定する

もしくは、以下のようにTi.UI.Windowインスタンスの作成時にプロパティに指定することでも同様に回転の制御を行うことができます。なんらかの条件によって回転制御の可否を設定したい場合などはこちらの方法がいいかもしれませんね。

var window = Ti.UI.createWindow({  
	orientationModes:[
		Ti.UI.LANDSCAPE_LEFT,
		Ti.UI.LANDSCAPE_RIGHT,
		Ti.UI.PORTRAIT,
		Ti.UI.UPSIDE_PORTRAIT
	]
});