Esempio n. 1
0
        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);
        }
Esempio n. 2
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);
        }