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

Mit*_*ens 2 uibutton xamarin.ios ios xamarin

我正在为Xamarin Ios开发一个应用程序,我正在努力找到一种方法,只需将一个圆形边框应用于UIButton类型的按钮.

Sus*_*ver 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();
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述


Iva*_*dic 5

您可以执行以下操作(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
Run Code Online (Sandbox Code Playgroud)

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

yourLabel.Layer.MaskedCorners = (CoreAnimation.CACornerMask)5;  //top & bottom left corners rounded
Run Code Online (Sandbox Code Playgroud)

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

  • 0:无圆角
  • 1:左上方
  • 2:右上
  • 3:左上和右上(两个上角)
  • 4:左下
  • 5:左上角和左下角(两个角)
  • 6:右上和左下
  • 7:左上和右上,左下(除右下外的所有角)
  • 8:右下
  • 9:左上方,右下方
  • 10:右上角和右下角(两个角)
  • 11:两个右上角,右下(左下角以外的所有角)
  • 12:左下和右下(两个下角)
  • 13:左下与右,左上(除右上外的所有角)
  • 14:左下与右,右上(除左上角外的所有角)
  • 15:四舍五入

这样就可以了...