Swift 如何切割按钮的拐角,而不是使其圆滑?

Swift 如何切割按钮的拐角,而不是使其圆滑?,swift,uibutton,Swift,Uibutton,我想在swift中剪下UIButton的角 我知道如何设置拐角半径,但我想切掉拐角 // what I DON'T want, rounded corners myButton.layer.cornerRadius = myButton.frame.height / 2 捷径对我来说是: 您可以通过以下方式实现: sampleButton.layer.cornerRadius = 15 sampleButton.clipsToBounds = true 使用如下所示的所需路径创建一个CASh

我想在swift中剪下UIButton的角

我知道如何设置拐角半径,但我想切掉拐角

// what I DON'T want, rounded corners
myButton.layer.cornerRadius = myButton.frame.height / 2
捷径对我来说是:


您可以通过以下方式实现:

sampleButton.layer.cornerRadius = 15
sampleButton.clipsToBounds = true

使用如下所示的所需路径创建一个CAShapeLayer


请参见以下内容:你所说的“偷工减料”是什么意思?我添加了一张图片以更好地显示iTunes的黄色图像作为uibutton的背景。这与我问题中的代码片段有什么不同?我不想要圆角,而是要削角。削角和圆角有什么区别?就像用刀削角一样button@swiftlynx这是不可行的,你可以设置按钮图像代替。
let button = UIButton()
button.backgroundColor = .red
button.frame = CGRect(x: 100, y: 100, width: 200, height: 40)
view.addSubview(button)

let layer = CAShapeLayer()
layer.fillColor = UIColor.yellow.cgColor

let cutSize:CGFloat = 20
let path = UIBezierPath()
path.move(to: CGPoint(x: 0, y: button.bounds.midY))
path.addLine(to: CGPoint(x: cutSize, y: 0))
path.addLine(to: CGPoint(x: button.bounds.maxX-cutSize, y: 0))
path.addLine(to: CGPoint(x: button.bounds.maxX, y: button.bounds.midY))
path.addLine(to: CGPoint(x: button.bounds.maxX-cutSize, y: button.bounds.maxY))
path.addLine(to: CGPoint(x: cutSize, y: button.bounds.maxY))
path.addLine(to: CGPoint(x: 0, y: button.bounds.midY))

layer.path = path.cgPath
button.layer.insertSublayer(layer, at: 0)