Skip to main content
 首页 » 编程设计

c#之iOS 使图像适合屏幕

2024年04月12日64mate10pro

我有一个 646x289 的图像,我试图根据其宽高比使其适合屏幕。

这是我目前的做法:

Controller :

public override void ViewDidLayoutSubviews() 
{ 
    base.ViewDidLayoutSubviews(); 
    _imnLogo.ContentMode = UIViewContentMode.ScaleAspectFit; 
    _imnLogo.SizeToFit(); 
    _imnLogo.Frame = new CGRect( 
        View.Bounds.Left + 2 * Globals.MarginGrid, 
        View.Bounds.Top + Globals.MarginGrid, 
        _scaledImage.Size.Width, _scaledImage.Size.Height); 
} 
 
public override void LoadView() 
{ 
    base.LoadView(); 
    _scaledImage = MaxResizeImage( 
        UIImage.FromFile("imn_logo.png"), (float) View.Bounds.Width, (float) View.Bounds.Height); 
 
    _imnLogo = new UIImageView(_scaledImage); 
    View.AddSubview(_imnLogo); 
} 
 
public UIImage MaxResizeImage(UIImage sourceImage, float maxWidth, float maxHeight) 
{ 
    var sourceSize = sourceImage.Size; 
    var maxResizeFactor = Math.Max(maxWidth / sourceSize.Width, maxHeight / sourceSize.Height); 
    if (maxResizeFactor > 1) return sourceImage; 
 
    var width = maxResizeFactor * sourceSize.Width; 
    var height = maxResizeFactor * sourceSize.Height; 
    UIGraphics.BeginImageContext(new SizeF((float) width, (float) height)); 
    sourceImage.Draw(new RectangleF(0, 0, (float) width, (float) height)); 
    var resultImage = UIGraphics.GetImageFromCurrentImageContext(); 
    UIGraphics.EndImageContext(); 
    return resultImage; 
} 

加载时,图片太大,屏幕放不下。

我也在用 C#(使用 Xamarin)构建我的所有接口(interface),所以我需要能够使用框架和边界来完成。

请您参考如下方法:

使用 UIImageView 的 ContentMode 来控制图像的缩放方式,您可以跳过手动调整大小:

public override void LoadView() 
{ 
    base.LoadView(); 
    _imnLogo = new UIImageView(UIImage.FromFile("imn_logo.png")); 
    _imnLogo.Frame = View.Frame; 
    _imnLogo.ContentMode = UIViewContentMode.ScaleAspectFill; 
    View.AddSubview(imageView); 
    View.SendSubviewToBack(imnLogo); // Do this if you want to place other `View`s on top of the logo... 
} 

引用:https://developer.apple.com/reference/uikit/uiviewcontentmode