画一个半圆形按钮iOS

gar*_*ing 4 ios swift

我正在尝试绘制一个半圆形按钮.我在绘制半圆并将其附加到我在xcode中制作的按钮时遇到了麻烦.xcode中的按钮具有约束,将其固定到屏幕底部并使其居中.我在视图控制器中引用该按钮,然后尝试将其覆盖为半圆,如下所示.我得到一个空白按钮.我还在按钮所在的故事板的坐标中进行了硬编码.有没有更好的方法呢?

let circlePath = UIBezierPath.init(arcCenter: CGPoint(x: 113.0, y: 434.0),
radius: 10.0, startAngle: 0.0, endAngle: CGFloat(M_PI), clockwise: true)

let circleShape = CAShapeLayer()
circleShape.path = circlePath.CGPath

sunButton.layer.mask = circleShape
Run Code Online (Sandbox Code Playgroud)

joe*_*ern 10

问题是您的形状图层位于按钮边界之外.如果您只是将形状图层添加为按钮图层的子视图,您将看到问题:

button.layer.addSublayer(circleShape)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

您必须调整圆弧中心点,以便圆弧位于按钮的边界内:

let circlePath = UIBezierPath.init(arcCenter: CGPointMake(button.bounds.size.width / 2, 0), radius: button.bounds.size.height, startAngle: 0.0, endAngle: CGFloat(M_PI), clockwise: true)
let circleShape = CAShapeLayer()
circleShape.path = circlePath.CGPath
button.layer.mask = circleShape
Run Code Online (Sandbox Code Playgroud)

你会得到这个:

在此输入图像描述