自定义iOS UIButton形状

时间:2018-09-20 10:43:00

标签: ios xamarin uibutton

我正在尝试根据线框创建一个半圆形按钮。

enter image description here

但是结果不正确。

enter image description here

这是我用C#编写的代码:

PORCalculatorButton.Layer.CornerRadius = PORCalculatorButton.Layer.Bounds.Width / 2;
PORCalculatorButton.ClipsToBounds = true;
PORCalculatorButton.Layer.MaskedCorners = (CoreAnimation.CACornerMask)3;

按钮上也有布局限制。

任何人都可以告诉我哪里出了问题或者是否有更好的方法? 我将接受ObjC,Swift或C#中的所有答案 谢谢。

2 个答案:

答案 0 :(得分:2)

尝试以下代码:

let circlePath = UIBezierPath.init(arcCenter: 
CGPointMake(PORCalculatorButton.bounds.size.width / 2, PORCalculatorButton.bounds.size.height), radius: PORCalculatorButton.bounds.size.height, startAngle: 0.0, endAngle: CGFloat(M_PI), clockwise: false)
let circleShape = CAShapeLayer()
circleShape.path = circlePath.CGPath
PORCalculatorButton.layer.mask = circleShape

答案 1 :(得分:0)

  1. 由于布局限制,您的按钮将根据外部视图调整大小。您需要确保在渲染按钮后应用图层属性,以确保拥有最终的帧/边界,并且如果按钮大小发生变化(例如由于旋转等),还需要重新应用相同的属性
  2. 您尝试垂直修剪/遮盖该按钮,但是您使用的是宽度而非高度来计算拐角半径。这是预期的实现吗?