0
我正在构建一个MonoTouch应用程序,该应用程序在iOS设备屏幕上具有UI,并通过HDMI在第二个屏幕上显示图像。在UIImageView中显示图像时,图像不会填充第二个屏幕。以下是在外部屏幕上设置和显示图像的代码。 UIScreen.Screens [1]的宽度和高度给了我正确的值1920/1080。当我显示图像时,我会在顶部/底部获得1英寸边框,并在左侧/右侧获得1.5英寸边框。使用具有类似外部屏幕设置的MPMoviePlayerController填充屏幕。图像不填充外部屏幕
public void SetImageExternal(string imageFile)
{
if(string.IsNullOrEmpty(imageFile) == false)
{
UIScreen externalScreen;
UIWindow externalWindow;
UIView externalView;
UIImageView externalImageView;
SizeF externalScreenSize;
if(UIScreen.Screens.Length > 1)
{
if(externalWindow != null)
externalWindow.Dispose();
externalWindow = null;
externalScreenSize = new SizeF();
externalScreenSize.Width = 0;
externalScreenSize.Height = 0;
UIScreenMode maxScreenMode = null;
externalScreen = UIScreen.Screens[1];
// Use the screen with the largest width
for(int i = 0; i < externalScreen.AvailableModes.Length; i++)
{
UIScreenMode current = UIScreen.Screens[1].AvailableModes[i];
if(current.Size.Width > externalScreenSize.Width)
{
externalScreenSize = current.Size;
maxScreenMode = current;
}
}
externalScreen.CurrentMode = maxScreenMode;
externalWindow = new UIWindow(new RectangleF(0, 0, externalScreenSize.Width, externalScreenSize.Height));
externalWindow.RootViewController = new UIViewController(); // create dummy root view controller
externalWindow.UserInteractionEnabled = false;
externalImageView = new UIImageView(externalWindow.Frame);
externalImageView.Image = UIImage.FromBundle(imageFile);
externalImageView.ContentMode = UIViewContentMode.ScaleToFill;
externalView = new UIView(externalWindow.Frame);
externalView.AddSubview(externalImageView);
foreach(UIView view in externalWindow.Subviews)
view.RemoveFromSuperview();
externalWindow.AddSubview(externalView);
externalWindow.MakeKeyAndVisible();
externalWindow.Hidden = false;
externalWindow.Screen = externalScreen;
}
}
}