summaryrefslogtreecommitdiff
path: root/Xamarin.Forms.Platform.iOS/Renderers/BoxRenderer.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Xamarin.Forms.Platform.iOS/Renderers/BoxRenderer.cs')
-rw-r--r--Xamarin.Forms.Platform.iOS/Renderers/BoxRenderer.cs78
1 files changed, 78 insertions, 0 deletions
diff --git a/Xamarin.Forms.Platform.iOS/Renderers/BoxRenderer.cs b/Xamarin.Forms.Platform.iOS/Renderers/BoxRenderer.cs
new file mode 100644
index 00000000..f60ed6c1
--- /dev/null
+++ b/Xamarin.Forms.Platform.iOS/Renderers/BoxRenderer.cs
@@ -0,0 +1,78 @@
+using System.ComponentModel;
+using System.Drawing;
+#if __UNIFIED__
+using UIKit;
+using CoreGraphics;
+#else
+using MonoTouch.UIKit;
+using MonoTouch.CoreGraphics;
+#endif
+#if __UNIFIED__
+using RectangleF = CoreGraphics.CGRect;
+using SizeF = CoreGraphics.CGSize;
+using PointF = CoreGraphics.CGPoint;
+
+#else
+using nfloat=System.Single;
+using nint=System.Int32;
+using nuint=System.UInt32;
+#endif
+
+namespace Xamarin.Forms.Platform.iOS
+{
+ public class BoxRenderer : VisualElementRenderer<BoxView>
+ {
+ UIColor _colorToRenderer;
+
+ SizeF _previousSize;
+
+ public override void Draw(RectangleF rect)
+ {
+ using(var context = UIGraphics.GetCurrentContext())
+ {
+ _colorToRenderer.SetFill();
+ context.FillRect(rect);
+ }
+ base.Draw(rect);
+
+ _previousSize = Bounds.Size;
+ }
+
+ public override void LayoutSubviews()
+ {
+ if (_previousSize != Bounds.Size)
+ SetNeedsDisplay();
+ }
+
+ protected override void OnElementChanged(ElementChangedEventArgs<BoxView> e)
+ {
+ base.OnElementChanged(e);
+
+ if (Element != null)
+ SetBackgroundColor(Element.BackgroundColor);
+ }
+
+ protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
+ {
+ base.OnElementPropertyChanged(sender, e);
+ if (e.PropertyName == BoxView.ColorProperty.PropertyName)
+ SetBackgroundColor(Element.BackgroundColor);
+ else if (e.PropertyName == VisualElement.IsVisibleProperty.PropertyName && Element.IsVisible)
+ SetNeedsDisplay();
+ }
+
+ protected override void SetBackgroundColor(Color color)
+ {
+ if (Element == null)
+ return;
+
+ var elementColor = Element.Color;
+ if (!elementColor.IsDefault)
+ _colorToRenderer = elementColor.ToUIColor();
+ else
+ _colorToRenderer = color.ToUIColor();
+
+ SetNeedsDisplay();
+ }
+ }
+} \ No newline at end of file