Xamarin Forms项目如何为Page使用不同大小的BackgroundImage属性?

时间:2016-06-29 10:01:46

标签: c# xamarin xamarin.ios xamarin.forms

我在参考资料中添加了一些类型的图像

 - 320 x 480 login-background.png
 - 640 x 960 login-background@2x.png
 - 640 x 1136 login-background-568h@2x.png
 - 750 x 1334 login-background-667h@2x.png

solution explorer pic

然后我在xaml中填充了BackgroundImage属性,如“Image / login-background” xaml page pic

但它仍然无效。设备和模拟器都呈现320 x 480。

1 个答案:

答案 0 :(得分:3)

Xaml无法识别iOS的-568h@2x e.t.c.它选择与没有扩展名的确切名称匹配的图像。它适用于android,因为所有图像都具有相同的名称,并且分辨率文件夹不同。

作为一种解决方法,您可以通过覆盖OnSizeAllocated方法查看高度/宽度来设置后面的C#代码中的图像。

protected override void OnSizeAllocated(double width, double height)
{
    base.OnSizeAllocated(width, height);
    string BackGroundImgName = "myimage";
    Device.OnPlatform(iOS: () =>
    {
        if (width >= 414)
            // iPhone 6 Plus
            this.BackgroundImage = BackGroundImgName + "-736h@3x.png";
        else if (width >= 375)
            // iPhone 6
            this.BackgroundImage = BackGroundImgName + "-667h@2x.png";
        else if (width >= 320 && height >= 500)
            // iPhone 5
            this.BackgroundImage = BackGroundImgName + "-568h@2x.png";
        else if (width >= 320)
            // iPhone 4
            this.BackgroundImage = BackGroundImgName + "@2x.png";
        else
            this.BackgroundImage = BackGroundImgName + ".png";
    },
    Android: () => { this.BackgroundImage = BackGroundImgName + ".png"; }
    );
}