読者です 読者をやめる 読者になる 読者になる

Xamarin 日本語情報

Xamarin(ザマリン) の代理店だったエクセルソフト田淵のブログです。主に Xamarin に関するエントリーをアップしていきます。(なるべく正しい有益な情報を掲載していきたいと考えていますが、このブログのエントリーは所属組織の公式見解ではありませんのでご注意ください)

Xamarin.iOSで画面サイズを取得するには?

こんにちは。エクセルソフトの田淵です。

前回は

ytabuchi.hatenablog.com

ということで 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);

FrameBoundsの違いは [iPhone] UIView の frame と bounds の違い | Sun Limited Mt. を参考にしました。ありがとうございます。

また、Xamarin.iOSではFrame.Origin.X|YBounds.Origin.X|Yがなく、Frame.X|YBounds.X|Yみたいなのでご注意ください。

Xamarin 気になった方は

是非 ダウンロード(直接) / ダウンロード(弊社経由) して触ってみてください。 学習用リソースJXUG リンクページ に参考資料を纏めてますので併せてどうぞ。

Xamarin の情報が欲しい方はこのブログも購読いただいたりすると嬉しいです。

以上です。