public override void Draw(CGRect rect) { base.Draw(rect); GradientStack stack = (GradientStack)Element; CGColor startColor = stack.StartColor.ToCGColor(); CGColor endColor = stack.EndColor.ToCGColor(); CAGradientLayer gradientLayer; if (stack.Orientation == StackOrientation.Horizontal) { gradientLayer = new CAGradientLayer { StartPoint = new CGPoint(0, 0.5), EndPoint = new CGPoint(1, 0.5) }; } else { gradientLayer = new CAGradientLayer(); } gradientLayer.Frame = rect; gradientLayer.Colors = new CGColor[] { startColor, endColor }; NativeView.Layer.InsertSublayer(gradientLayer, 0); }
protected override void OnElementChanged(ElementChangedEventArgs <StackLayout> e) { base.OnElementChanged(e); if (e.OldElement != null || Element == null) { return; } try { stack = e.NewElement as GradientStack; StartColor = stack.StartColor; EndColor = stack.EndColor; } catch (Exception ex) { System.Diagnostics.Debug.WriteLine(@"Error: ", ex.Message); } }
public override void Draw(CGRect rect) { base.Draw(rect); GradientStack stack = (GradientStack)this.Element; CGColor[] cGColors = new CGColor[] { stack.StartColor.ToCGColor(), stack.EndColor.ToCGColor() }; CAGradientLayer gradientLayer = new CAGradientLayer { Frame = rect, Colors = cGColors }; if (!stack.IsVertical) { gradientLayer = new CAGradientLayer() { StartPoint = new CGPoint(0, 0.5), EndPoint = new CGPoint(1, 0.5), }; } NativeView.Layer.InsertSublayer(gradientLayer, 0); }