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:私が方法を知らないだけかも知れない