protected virtual void Dispose(bool disposing)
        {
            if (!_disposed)
            {
                if (disposing)
                {
                    _backgroundDrawable?.Dispose();
                    _backgroundDrawable = null;
                    _defaultDrawable?.Dispose();
                    _defaultDrawable = null;
                    _rippleDrawable?.Dispose();
                    _rippleDrawable = null;
                    if (BorderElement != null)
                    {
                        BorderElement.PropertyChanged -= BorderElementPropertyChanged;
                        BorderElement = null;
                    }

                    if (_renderer != null)
                    {
                        _renderer.ElementChanged -= OnElementChanged;
                        _renderer = null;
                    }
                }
                _disposed = true;
            }
        }
Example #2
0
        public static void UpdateBorder(IVisualNativeElementRenderer renderer, IBorderController backgroundView)
        {
            var control     = renderer.Control;
            var ImageButton = backgroundView;

            if (control == null)
            {
                return;
            }

            if (ImageButton.BorderColor != Color.Default)
            {
                control.Layer.BorderColor = ImageButton.BorderColor.ToCGColor();
            }

            control.Layer.BorderWidth = Math.Max(0f, (float)ImageButton.BorderWidth);

            nfloat cornerRadius = _defaultCornerRadius;

            if (ImageButton.IsSet(ImageButton.CornerRadiusProperty) && ImageButton.CornerRadius != (int)ImageButton.CornerRadiusProperty.DefaultValue)
            {
                cornerRadius = ImageButton.CornerRadius;
            }

            control.Layer.CornerRadius = cornerRadius;
        }
Example #3
0
        static void OnControlChanged(object sender, EventArgs e)
        {
            IVisualNativeElementRenderer renderer       = (IVisualNativeElementRenderer)sender;
            IBorderController            backgroundView = (IBorderController)renderer.Element;

            UpdateBorder(renderer, backgroundView);
        }
Example #4
0
        static void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            IVisualNativeElementRenderer renderer       = (IVisualNativeElementRenderer)sender;
            IBorderController            backgroundView = (IBorderController)renderer.Element;

            if (e.PropertyName == backgroundView.BorderWidthProperty.PropertyName || e.PropertyName == backgroundView.CornerRadiusProperty.PropertyName || e.PropertyName == backgroundView.BorderColorProperty.PropertyName)
            {
                UpdateBorder(renderer, backgroundView);
            }
        }