VGAへの出力

VGAケーブルやAVデジタルケーブルで追加されたスクリーンにUIViewを表示する為に以下の様なコードを書いた。

if (UIScreen.Screens.GetLength(0) > 1)
{
	UIScreen screen = UIScreen.Screens[1];
	UIWindow awin = new UIWindow();
	awin.Screen = screen;

	UIButton btn2 = UIButton.FromType(UIButtonType.RoundedRect);
	btn2.Frame=new System.Drawing.RectangleF(50,50,100,40);
	btn2.SetTitle("ASFASDF", UIControlState.Normal);
	awin.Add(btn2);
	awin.MakeKeyAndVisible();
}

シミュレータ上ではとりあえず問題なく表示されている。
しかし本家SDKでは

if (UIScreen.Screens.GetLength(0) > 1)
{
	UIScreen screen = UIScreen.Screens[1];
	UIScreenMode maxScreenMode = screen.CurrentMode;
	SizeF maxSize;
	foreach (UIScreenMode current in screen.AvailableModes) {
		if (current.Size.Width > maxSize.Width) {
			maxSize = current.Size;
			maxScreenMode = current;
		}
	}
	screen.CurrentMode = maxScreenMode;
	UIWindow awin = new UIWindow(new RectangleF(new PointF(0,0), maxSize));
	awin.Screen = screen;
	UIButton btn2 = UIButton.FromType(UIButtonType.RoundedRect);
	btn2.Frame=new System.Drawing.RectangleF(50,50,100,40);
	btn2.SetTitle("ASFASDF", UIControlState.Normal);
	btn2.TouchDown += delegate {
		Console.WriteLine("aafsadf");
	};
	awin.Add(btn2);
	awin.MakeKeyAndVisible();
}

このように複数有るUIScreenModeから最適なものを取得するべきだとある。
シミュレータではscreen.AvailableModesが複数ある状態を再現できない*1のでどちらが正しいのかは不明。

*1:私が方法を知らないだけかも知れない