2016-09-07 220 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