Пример #1
0
        public override void Draw(CGRect rect)
        {
            MyLabelRenderer myLabelRenderer = (MyLabelRenderer)Element;

            if (myLabelRenderer.IsGradient)
            {
                var gradientView = new UIView(Control.Frame);
                Control.BackgroundColor = UIColor.Clear;
                Color color = ColorInterpolator.InterpolateBetween(myLabelRenderer.StartColor,
                                                                   myLabelRenderer.EndColor,
                                                                   myLabelRenderer.NumToGradient);

                var gradientLayer = new CAGradientLayer
                {
                    Frame  = gradientView.Layer.Bounds,
                    Colors = new CGColor[] { myLabelRenderer.StartColor.ToCGColor(), color.ToCGColor() }
                };

                gradientView.Layer.AddSublayer(gradientLayer);
                gradientView.AddSubview(Control);

                var gradientLabel = new UILabel(Control.Frame);
                gradientLabel.AddSubview(gradientView);
                SetNativeControl(gradientLabel);

                gradientLayer.StartPoint = new CGPoint(0, 0.5);
                gradientLayer.EndPoint   = new CGPoint(1.0, 0.5);
            }
            else
            {
                Control.BackgroundColor = myLabelRenderer.StaticColor.ToUIColor();
            }
            base.Draw(rect);
        }
Пример #2
0
 protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
 {
     base.OnElementPropertyChanged(sender, e);
     if (e.PropertyName.Equals(MyLabelRenderer.StaticColorProperty.PropertyName))
     {
         MyLabelRenderer myLabelRenderer = (MyLabelRenderer)Element;
         SetDrawable(myLabelRenderer);
     }
 }
Пример #3
0
        protected override void OnElementChanged(ElementChangedEventArgs <Label> e)
        {
            base.OnElementChanged(e);

            if ((Control != null) && (e.OldElement == null))
            {
                MyLabelRenderer myLabelRenderer = (MyLabelRenderer)Element;
                SetDrawable(myLabelRenderer);
            }
        }
Пример #4
0
        protected override void OnElementChanged(ElementChangedEventArgs <Label> e)
        {
            base.OnElementChanged(e);

            if (e.OldElement == null)
            {
                MyLabelRenderer myLabelRenderer = (MyLabelRenderer)Element;
                TypeBorder = myLabelRenderer.TypeBorder;
            }
        }
Пример #5
0
        public override void LayoutSubviews()
        {
            base.LayoutSubviews();
            CAShapeLayer    cAShapeLayer    = null;
            MyLabelRenderer myLabelRenderer = (MyLabelRenderer)Element;

            switch (TypeBorder)
            {
            case TypeBorder.All:
                cAShapeLayer = new CAShapeLayer()
                {
                    Path = UIBezierPath.FromRoundedRect(base.Bounds,
                                                        UIRectCorner.BottomLeft | UIRectCorner.TopLeft | UIRectCorner.BottomRight | UIRectCorner.TopRight,
                                                        new CGSize(myLabelRenderer.BorderRadius, myLabelRenderer.BorderRadius)).CGPath
                };
                break;

            case TypeBorder.Right:
                cAShapeLayer = new CAShapeLayer()
                {
                    Path = UIBezierPath.FromRoundedRect(base.Bounds,
                                                        UIRectCorner.BottomRight | UIRectCorner.TopRight,
                                                        new CGSize(myLabelRenderer.BorderRadius, myLabelRenderer.BorderRadius)).CGPath
                };
                break;

            case TypeBorder.Up:
                cAShapeLayer = new CAShapeLayer()
                {
                    Path = UIBezierPath.FromRoundedRect(base.Bounds,
                                                        UIRectCorner.TopLeft | UIRectCorner.TopRight,
                                                        new CGSize(myLabelRenderer.BorderRadius, myLabelRenderer.BorderRadius)).CGPath
                };
                break;

            case TypeBorder.Left:
                cAShapeLayer = new CAShapeLayer()
                {
                    Path = UIBezierPath.FromRoundedRect(base.Bounds,
                                                        UIRectCorner.BottomLeft | UIRectCorner.TopLeft,
                                                        new CGSize(myLabelRenderer.BorderRadius, myLabelRenderer.BorderRadius)).CGPath
                };
                break;

            case TypeBorder.Down:
                cAShapeLayer = new CAShapeLayer()
                {
                    Path = UIBezierPath.FromRoundedRect(base.Bounds,
                                                        UIRectCorner.BottomLeft | UIRectCorner.BottomRight,
                                                        new CGSize(myLabelRenderer.BorderRadius, myLabelRenderer.BorderRadius)).CGPath
                };
                break;
            }
            base.Layer.Mask = cAShapeLayer;
        }
Пример #6
0
 protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
 {
     base.OnElementPropertyChanged(sender, e);
     if (e.PropertyName.Equals(MyLabelRenderer.StaticColorProperty.PropertyName))
     {
         MyLabelRenderer myLabelRenderer = (MyLabelRenderer)Element;
         Control.BackgroundColor = myLabelRenderer.StaticColor.ToUIColor();
     }
     if (e.PropertyName.Equals(MyLabelRenderer.TextColorProperty.PropertyName))
     {
         MyLabelRenderer myLabelRenderer = (MyLabelRenderer)Element;
         Control.TextColor = myLabelRenderer.TextColor.ToUIColor();
     }
 }
Пример #7
0
        void SetDrawable(MyLabelRenderer myLabelRenderer)
        {
            GradientDrawable gradientDrawable = new GradientDrawable();

            if (myLabelRenderer.IsGradient)
            {
                Color color = ColorInterpolator.InterpolateBetween(myLabelRenderer.StartColor,
                                                                   myLabelRenderer.EndColor,
                                                                   myLabelRenderer.NumToGradient);
                gradientDrawable = new GradientDrawable(
                    GradientDrawable.Orientation.LeftRight,
                    new int[] { myLabelRenderer.StartColor.ToAndroid(), color.ToAndroid() }
                    );
            }
            else
            {
                gradientDrawable.SetColor(myLabelRenderer.StaticColor.ToAndroid());
            }
            switch (myLabelRenderer.TypeBorder)
            {
            case TypeBorder.All:
                gradientDrawable.SetCornerRadii(new float[] { 80, 80, 80, 80,
                                                              80, 80, 80, 80 });
                break;

            case TypeBorder.Left:
                gradientDrawable.SetCornerRadii(new float[] { 80, 80, 0, 0,
                                                              0, 0, 80, 80 });
                break;

            case TypeBorder.Right:
                gradientDrawable.SetCornerRadii(new float[] { 0, 0, 80, 80,
                                                              80, 80, 0, 0 });
                break;

            case TypeBorder.Down:
                gradientDrawable.SetCornerRadii(new float[] { 0, 0, 0, 0,
                                                              80, 80, 80, 80 });
                break;

            case TypeBorder.Up:
                gradientDrawable.SetCornerRadii(new float[] { 80, 80, 80, 80,
                                                              0, 0, 0, 0 });
                break;
            }
            Control.SetBackground(gradientDrawable);
        }