こんにちは。エクセルソフトの田淵です。
前回は
ということで Android の画面サイズを取得しました。今回は iOS の画面サイズ、コントロールのサイズを取得したいと思います。最終目標は「Labelを画面上でAccelerometerの値を元に移動させる」です。
こんな感じになりました。
ディスプレイサイズの取得
Androidと違い、iOSは(やっとiOS 9でStackLayoutが出てきたくらいで)基本はAbsoluteなレイアウトに直接配置していく感じです。Viewのサイズもそのまま取れます。
// Viewのサイズを取得
layoutW = View.Bounds.Width;
layoutH = View.Bounds.Height;
iPhone 6 Plus では以下のようになりました。
Width: 414 Height: 736
後はViewのサイズを元に配置したいコントロールのサイズを指定して、AddSubView
で配置してあげればOKですね。例えば以下のような感じだとViewの中央に配置できます。
// Viewのサイズを取得 layoutW = View.Bounds.Width; layoutH = View.Bounds.Height; // Viewサイズを元にLabelサイズを指定 textW = layoutW / 2; textH = layoutH / 6; // Label作成&配置 var sensorText = new UILabel(new CGRect(layoutW / 2 - textW / 2, layoutH / 2 - textH / 2, textW, textH)); View.AddSubview(sensorText);
Frame
とBounds
の違いは [iPhone] UIView の frame と bounds の違い | Sun Limited Mt. を参考にしました。ありがとうございます。
また、Xamarin.iOSではFrame.Origin.X|Y
やBounds.Origin.X|Y
がなく、Frame.X|Y
とBounds.X|Y
みたいなのでご注意ください。
Xamarin 気になった方は
是非 ダウンロード(直接) / ダウンロード(弊社経由) して触ってみてください。 学習用リソース や JXUG リンクページ に参考資料を纏めてますので併せてどうぞ。
Xamarin の情報が欲しい方はこのブログも購読いただいたりすると嬉しいです。
以上です。