Как добавить тень в UIView в Xamarin. iOS? - PullRequest
0 голосов
/ 05 февраля 2020

Я нашел эту ссылку для этого в Swift: Как лучше всего добавить тень на мой UIView

Однако, когда я адаптирую решение к Xamarin, тень не появляется.

public override void ViewDidLayoutSubviews()
{
    base.ViewDidLayoutSubviews();

    UIBezierPath path = new UIBezierPath();
    PreviousButton.Layer.MasksToBounds = false;
    PreviousButton.Layer.ShadowColor = UIColor.Gray.CGColor;
    PreviousButton.Layer.ShadowOffset = new CoreGraphics.CGSize(0f, 7f);
    PreviousButton.Layer.ShadowOpacity = 1;
    PreviousButton.Layer.ShadowPath = path.CGPath;
}

Я использую AutoLayout.

1 Ответ

1 голос
/ 06 февраля 2020

Причина:

Вы, кажется, забыли установить Rect пути

Решение 1:

Вы можете напрямую установить тень кнопки

public override void ViewDidLayoutSubviews()
{
    base.ViewDidLayoutSubviews();

    PreviousButton.Layer.MasksToBounds = false;
    PreviousButton.Layer.ShadowColor = UIColor.Gray.CGColor;
    PreviousButton.Layer.ShadowOffset = new CoreGraphics.CGSize(0f, 7f);
    PreviousButton.Layer.ShadowOpacity = 1;   
}

Решение 2: Если вы хотите использовать BezierPath, установите его прямоугольник.

public override void ViewDidLayoutSubviews()
{
    base.ViewDidLayoutSubviews();
    UIBezierPath path = UIBezierPath.FromRect(PreviousButton.Bounds);
    PreviousButton.Layer.MasksToBounds = false;
    PreviousButton.Layer.ShadowColor = UIColor.Gray.CGColor;
    PreviousButton.Layer.ShadowOffset = new CoreGraphics.CGSize(0f, 7f);
    PreviousButton.Layer.ShadowOpacity = 1;
    PreviousButton.Layer.ShadowPath = path.CGPath;   
}
...