Xamarin.Forms BackgroundImage

时间:2016-09-07 19:35:32

标签: xamarin xamarin.ios xamarin.forms

我想为整个应用实现背景图片。

我在Android上使用全局style.xml <item name="android:windowBackground">@drawable/appbg</item>。我怎样才能在iOS上实现这个目标?

有可能这样吗?

public override bool FinishedLaunching(UIApplication app, 
  NSDictionary options)
{
  ...
  UIWindow.Appearance.BackgroundColor = UIColor.FromPatternImage(
    UIImage.FromFile("appbg.jpg"));
  ...
}

2 个答案:

答案 0 :(得分:1)

我用CustomNavigationPageRenderer解决了这个问题。

[assembly: ExportRenderer(typeof(OIdx.XForms.Pages.CustomNavigationPage), 

typeof(OIdx.XForms.iOS.Renderers.CustomNavigationPageRenderer))]
namespace OIdx.XForms.iOS.Renderers
{
    class CustomNavigationPageRenderer : NavigationRenderer
    {
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            var img = UIImage.FromBundle("appbg5.jpg");
            UIImageView iv = new UIImageView(img);
            iv.Layer.ZPosition = -1;
            this.View.AddSubview(iv);
        }
    }
}

答案 1 :(得分:0)

第一次:在AppDelegate通过Window.BackgroundColor分配UIIamge UIColor.FromPatternImage

public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions)
{
    Window.BackgroundColor = UIColor.FromPatternImage(new UIImage("background.png"));
    return true;
}

第二名:在您希望看到此背景的每个View中,您必须将UIColor设置为Clear

View.BackgroundColor = UIColor.Clear;

注意:应使用多个图像尺寸,以便每个设备获得适当分辨率的图像。

仅供参考:这是影响应用程序整个生命周期的内存耗尽,如果这不是纹理/平铺图像(iOS或Android)并且实际上是单个图像,那真的很糟糕实际上跨越整个屏幕。