【问题标题】:Xamarin Ios - Create rounded buttons on only 1 sideXamarin Ios - 仅在一侧创建圆形按钮
【发布时间】:2017-05-09 16:19:49
【问题描述】:

我目前正在为 Xamarin Ios 开发一个应用程序,我正在努力寻找一种方法来将圆形边框应用到 UIButton 类型按钮的一侧。

【问题讨论】:

    标签: ios xamarin xamarin.ios uibutton


    【解决方案1】:

    你可以这样做(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 是一个标记为标志的枚举,并且只定义了 4 个值(1、2、4、8),我假设您可以在那里进行按位运算,但这对我不起作用... 因此,唯一的方法是使用这样的正确值进行转换:

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

    根据您想要圆角的角从该列表中选择您的值:

    • 0:没有圆角
    • 1:左上角
    • 2:右上角
    • 3:左上和右上(两个上角)
    • 4:左下角
    • 5:左上角和左下角(两个左角)
    • 6:右上角和左下角
    • 7:左上和右上、左下(除右下外的所有角)
    • 8:右下角
    • 9:左上角,右下角
    • 10:右上角和右下角(两个右上角)
    • 11:两个上角、右下角(除左下角外的所有角)
    • 12:左下和右下(两个底角)
    • 13:左下和右下,左上(除了右上角之外的所有角)
    • 14:左下和右下,右上角(除左上角外的所有角)
    • 15:所有角都圆了

    这就是诀窍......

    【讨论】:

      【解决方案2】:

      在您的 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();
      }
      

      【讨论】:

        猜你喜欢
        • 2019-02-11
        • 2018-07-23
        • 2023-04-11
        • 2019-12-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多