Xamarin Ios - 仅在一侧创建圆形按钮

时间:2017-05-09 16:19:50

标签: ios xamarin xamarin.ios uibutton

我目前正在开发一款适用于Xamarin Ios的应用程序,我正在努力寻找一种方法,只需将一个圆形边框应用于UIButton类型的按钮。

2 个答案:

答案 0 :(得分:5)

在您的UIButton子类中,覆盖LayoutSubviews方法并添加一个掩码:

示例:左侧的顶部和底部圆形:

public override void LayoutSubviews()
{
    var maskingShapeLayer = new CAShapeLayer()
    {
        Path = UIBezierPath.FromRoundedRect(Bounds, UIRectCorner.BottomLeft | UIRectCorner.TopLeft, new CGSize(20, 20)).CGPath
    };
    Layer.Mask = maskingShapeLayer;
    base.LayoutSubviews();
}

enter image description here

答案 1 :(得分:4)

你可以这样做(IOS 11.0 +):

yourLabel.Layer.CornerRadius = 5; // set radius on all corners
yourLabel.ClipsToBounds = true; 
yourLabel.Layer.MaskedCorners = (CoreAnimation.CACornerMask)1; // cast the correct value as CACornerMask enum

由于CoreAnimation.CACornerMask是一个标记为Flags的枚举,并且只定义了4个值(1,2,4,8),我假设您可以在那里进行按位运算,但这对我来说并不起作用。 。 因此,唯一的方法是使用正确的值来投射它:

yourLabel.Layer.MaskedCorners = (CoreAnimation.CACornerMask)5;  //top & bottom left corners rounded

根据您想要舍入的角落从此列表中选择您的值:

  • 0:没有圆角
  • 1:左上角
  • 2:右上角
  • 3:左上角&右(两个顶角)
  • 4:左下角
  • 5:top&左下角(左角)
  • 6:右上角&左下角
  • 7:左上角&右边,左下角(除了右下角以外的所有角落)
  • 8:右下角
  • 9:左上角,右下角
  • 10:top&右下角(右角)
  • 11:两个顶角,右下角(除了左下角以外的所有角落)
  • 12:左下角&右(两个底角)
  • 13:左下角&右上,左上角(除了右上角以外的所有角落)
  • 14:左下角&右上角,右上角(左上角除外)
  • 15:所有角落圆润

这就是诀窍......