2012-10-02 3 views
0

저는 IOS 장치 화면에 UI가 있고 HDMI를 통해 두 번째 화면에 이미지가있는 MonoTouch 앱을 만들고 있습니다. 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; 
      } 
     } 
    } 

답변

0

ContentMode는 미리 렌더링 된 내용의 크기가 조정되는 방식을 결정합니다.

하지만 UIImageView는 UIImage의 LeftCapWidth 및 TopCapHeight 매개 변수를 기반으로 이미지의 크기가 조정되는 방식을 결정합니다. 설정되지 않은 경우에만 ContentMode가 사용됩니다.

관련 문제