From 637da0599969f26cadbbf9859e9eb6f26e66c3ba Mon Sep 17 00:00:00 2001 From: kingces95 Date: Wed, 27 Feb 2019 16:32:57 -1000 Subject: [PATCH] previewer; PageRenderer trap for missing bg image (#5342) * previewer; PageRenderer trap for missing bg image * previewer; PageRenderer trap for missing bg image * fix macOS; remove ext for macOS fixes #5300 --- Xamarin.Forms.Platform.iOS/Extensions/ColorExtensions.cs | 11 +++++++++++ Xamarin.Forms.Platform.iOS/Renderers/CarouselPageRenderer.cs | 2 +- Xamarin.Forms.Platform.iOS/Renderers/PageRenderer.cs | 2 +- .../Renderers/PhoneMasterDetailRenderer.cs | 2 +- .../Renderers/TabletMasterDetailRenderer.cs | 2 +- 5 files changed, 15 insertions(+), 4 deletions(-) diff --git a/Xamarin.Forms.Platform.iOS/Extensions/ColorExtensions.cs b/Xamarin.Forms.Platform.iOS/Extensions/ColorExtensions.cs index 6dc9e3b..9238607 100644 --- a/Xamarin.Forms.Platform.iOS/Extensions/ColorExtensions.cs +++ b/Xamarin.Forms.Platform.iOS/Extensions/ColorExtensions.cs @@ -32,6 +32,17 @@ namespace Xamarin.Forms.Platform.MacOS #endif } +#if __MOBILE__ + public static UIColor FromPatternImageFromBundle(string bgImage) + { + var image = UIImage.FromBundle(bgImage); + if (image == null) + return UIColor.White; + + return UIColor.FromPatternImage(image); + } +#endif + public static Color ToColor(this UIColor color) { nfloat red; diff --git a/Xamarin.Forms.Platform.iOS/Renderers/CarouselPageRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/CarouselPageRenderer.cs index e09bb41..7c10aee 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/CarouselPageRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/CarouselPageRenderer.cs @@ -361,7 +361,7 @@ namespace Xamarin.Forms.Platform.iOS string bgImage = ((Page)Element).BackgroundImage; if (!string.IsNullOrEmpty(bgImage)) { - View.BackgroundColor = UIColor.FromPatternImage(UIImage.FromBundle(bgImage)); + View.BackgroundColor = ColorExtensions.FromPatternImageFromBundle(bgImage); return; } Color bgColor = Element.BackgroundColor; diff --git a/Xamarin.Forms.Platform.iOS/Renderers/PageRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/PageRenderer.cs index adb90eb..5a1f010 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/PageRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/PageRenderer.cs @@ -322,7 +322,7 @@ namespace Xamarin.Forms.Platform.iOS string bgImage = ((Page)Element).BackgroundImage; if (!string.IsNullOrEmpty(bgImage)) { - View.BackgroundColor = UIColor.FromPatternImage(UIImage.FromBundle(bgImage) ?? throw new Exception($"Image: File '{bgImage}' not found in app bundle")); + View.BackgroundColor = ColorExtensions.FromPatternImageFromBundle(bgImage); return; } Color bgColor = Element.BackgroundColor; diff --git a/Xamarin.Forms.Platform.iOS/Renderers/PhoneMasterDetailRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/PhoneMasterDetailRenderer.cs index 79a650a..b62aa02 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/PhoneMasterDetailRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/PhoneMasterDetailRenderer.cs @@ -302,7 +302,7 @@ namespace Xamarin.Forms.Platform.iOS void UpdateBackground() { if (!string.IsNullOrEmpty(((Page)Element).BackgroundImage)) - View.BackgroundColor = UIColor.FromPatternImage(UIImage.FromBundle(((Page)Element).BackgroundImage)); + View.BackgroundColor = ColorExtensions.FromPatternImageFromBundle(((Page)Element).BackgroundImage); else if (Element.BackgroundColor == Color.Default) View.BackgroundColor = UIColor.White; else diff --git a/Xamarin.Forms.Platform.iOS/Renderers/TabletMasterDetailRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/TabletMasterDetailRenderer.cs index 1f705c2..fafdd93 100644 --- a/Xamarin.Forms.Platform.iOS/Renderers/TabletMasterDetailRenderer.cs +++ b/Xamarin.Forms.Platform.iOS/Renderers/TabletMasterDetailRenderer.cs @@ -319,7 +319,7 @@ namespace Xamarin.Forms.Platform.iOS void UpdateBackground() { if (!string.IsNullOrEmpty(((Page)Element).BackgroundImage)) - View.BackgroundColor = UIColor.FromPatternImage(UIImage.FromBundle(((Page)Element).BackgroundImage)); + View.BackgroundColor = ColorExtensions.FromPatternImageFromBundle(((Page)Element).BackgroundImage); else if (Element.BackgroundColor == Color.Default) View.BackgroundColor = UIColor.White; else -- 2.7.4