Ios 不完全路径笔划

Ios 不完全路径笔划,ios,swift3,uikit,core-graphics,uibezierpath,Ios,Swift3,Uikit,Core Graphics,Uibezierpath,我正在iOS上创建一个拆分按钮,使用两个相邻的UIButton。像这样: 正如您所见,右按钮左上角有一小口被咬掉,这是不可取的。我想完成中风的那一部分 右按钮使用UIBezierPath作为子层,在按钮周围绘制边框: let borderWidth=CGFloat(4.0) 让borderLayer=CAShapeLayer() var borderFrame=button.bounds.insetBy(dx:borderWidth/2.0,dy:borderWidth/2.0) border

我正在iOS上创建一个拆分按钮,使用两个相邻的UIButton。像这样:

正如您所见,右按钮左上角有一小口被咬掉,这是不可取的。我想完成中风的那一部分

右按钮使用UIBezierPath作为子层,在按钮周围绘制边框:

let borderWidth=CGFloat(4.0)
让borderLayer=CAShapeLayer()
var borderFrame=button.bounds.insetBy(dx:borderWidth/2.0,dy:borderWidth/2.0)
borderLayer.frame=borderFrame
borderFrame.origin=CGPoint.zero
borderLayer.path=UIBezierPath(roundedRect:borderFrame,byRoundingCorners:[.topRight、.bottomRight],cornerRadii:radius)。cgPath
borderLayer.lineWidth=borderWidth
borderLayer.fillColor=UIColor.white.cgColor
borderLayer.strokeColor=UIColor.green.cgColor
button.layer.addSublayer(边界层)
如果我使用

borderLayer.path = CGPath(rect: borderFrame, transform: nil)
与UIBezierPath不同,它工作正常。如果我绕过UIBezierPath的左上角,它也可以正常工作

有谁能帮我弄清楚如何按我喜欢的方式画边界吗? 提前谢谢

,在我的测试中没有:

import UIKit

let path = UIBezierPath(roundedRect: CGRect(x: 0, y: 0, width: 40, height: 40), byRoundingCorners: [.topRight, .bottomRight], cornerRadii: CGSize(width: 10, height: 10))
print(path)
输出:

<UIBezierPath: 0x6180000a5d00; <MoveTo {0, 0}>,
 <LineTo {24.713349999999998, 0}>,
 <CurveTo {33.300654247944713, 0.65495893024402596} {29.115070423814711, 0} {31.315930559369978, 0}>,
 <LineTo {33.685062071690076, 0.74911387847016009}>,
 <CurveTo {39.250886121529845, 6.3149379283099272} {36.27176173374253, 1.6905955604436995} {38.30940443955631, 3.7282382662574722}>,
 <CurveTo {40, 15.286649847295823} {40, 8.6840694406300223} {40, 10.884929576185289}>,
 <LineTo {40, 24.713349999999998}>,
 <CurveTo {39.345041069755972, 33.300654247944713} {40, 29.115070423814711} {40, 31.315930559369978}>,
 <LineTo {39.250886121529845, 33.685062071690076}>,
 <CurveTo {33.685062071690076, 39.250886121529838} {38.30940443955631, 36.27176173374253} {36.27176173374253, 38.309404439556296}>,
 <CurveTo {24.713350152704177, 40} {31.315930559369978, 40} {29.115070423814711, 40}>,
 <LineTo {0, 40}>,
 <LineTo {0, 0}>,
 <LineTo {0, 0}>
let path = UIBezierPath(roundedRect: borderFrame, byRoundingCorners: [.topRight, .bottomRight], cornerRadii: radius)
path.close()
borderLayer.path = path.cgPath