protected override void OnElementChanged(ElementChangedEventArgs <StackLayout> e)
        {
            base.OnElementChanged(e);

            if (e.OldElement != null || Element == null)
            {
                return;
            }
            try
            {
                stack = e.NewElement as CustomGradientRoundEdgeView;

                this.StartColor    = stack.StartColor;
                this.EndColor      = stack.EndColor;
                this.gradientStyle = stack.gradientMode;

                _cornerRadius = (float)stack.cornerRadius;
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(@"ERROR:", ex.Message);
            }
        }
Пример #2
0
        //public override void Draw(CGRect rect)
        //{
        //    base.Draw(rect);
        //}

        public override void Draw(CoreGraphics.CGRect rect)
        {
            base.Draw(rect);

            CustomGradientRoundEdgeView stack = (CustomGradientRoundEdgeView)this.Element;
            CGColor startColor    = stack.StartColor.ToCGColor();
            CGColor endColor      = stack.EndColor.ToCGColor();
            string  gradientStyle = stack.gradientMode;

            /*
             #region for Vertical Gradient
             *
             * var gradientLayer = new CAGradientLayer();
             *
             #endregion
             *
             #region for Horizontal Gradient
             *
             * //var gradientLayer = new CAGradientLayer()
             * //{
             * //  StartPoint = new CGPoint(0, 0.5),
             * //  EndPoint = new CGPoint(1, 0.5)
             * //};
             *
             #endregion
             */

            try
            {
                if (stack.HasBorderColor == true && stack.BorderColor != null)
                {
                    //double min = Math.Min(Element.Width, Element.Height);
                    //Control.Layer.CornerRadius = (float)(min / 2.0);
                    //Control.Layer.MasksToBounds = false;
                    //Control.Layer.BorderColor = Color.White.ToCGColor();
                    //Control.Layer.BorderWidth = 1;
                    //Control.ClipsToBounds = true;

                    double min = Math.Min(Element.Width, Element.Height);
                    //this.Layer.CornerRadius = (float)(min / 2.0);
                    this.Layer.MasksToBounds = false;
                    this.Layer.BorderColor   = stack.BorderColor.ToCGColor();
                    this.Layer.BorderWidth   = 1;
                    this.ClipsToBounds       = true;
                }
                else
                {
                }
            }
            catch (Exception ex)
            {
                var msg = ex.Message;
                //Debug.WriteLine("Unable to create circle image: " + ex);
            }

            var gradientLayer = new CAGradientLayer();

            if (gradientStyle == "Vertical")
            {
            }
            else
            {
                gradientLayer.StartPoint = new CGPoint(0, 0.5);
                gradientLayer.EndPoint   = new CGPoint(1, 0.5);
            }
            gradientLayer.Frame  = rect;
            gradientLayer.Colors = new CGColor[] { startColor, endColor };
            gradientLayer.ModelLayer.CornerRadius = (float)(stack.cornerRadius);
            NativeView.Layer.InsertSublayer(gradientLayer, 0);
        }