2016-09-07 183 views
1

我想实现整个应用程序的背景图像。Xamarin.Forms BackgroundImage

我使用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")); 
    ... 
} 

回答

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); 
     } 
    } 
} 
+0

感谢您的支持,但我一直无法为我工作。重写的ViewDidLoad()被调用,但该应用程序不会改变。那里有任何想法?你还有什么要做的吗? – Jonathan

+1

好吧,明白了。我只需要给我的XF页面的ContentPage元素一个透明的背景。谢谢! – Jonathan

0

1:在你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,你必须设置UIColorClear

View.BackgroundColor = UIColor.Clear; 

注意:应该使用多个图像大小,以便每个设备获得适当的分辨率图像。如果这不是纹理/平铺图像(iOS或Android),并且实际上图像实际上横跨整个图像,则这是非常糟糕的。屏幕。

+1

如果我设置BACKGROUNDCOLOR出现此错误'Foundation.ModelNotImplementedException:类型的异常 'Foundation.ModelNotImplementedException' 是thrown.'。 – mlauth

+0

@mlauth你有没有覆盖'Window'属性的自定义'UIApplicationDelegate'?或者从模板创建的AppDelegate中删除'Window'属性?在iOS4中使用Xamarin.iOS的真正旧版本吗?使用真正旧的/过时的代码? – SushiHangover

+0

为了测试这个,我刚创建了一个测试项目,据我所知,一切都是最新的。在Visual Studio和Xamarin Studio中出现同样的错误。 – mlauth