Вы можете увидеть, почему, если вы увеличите ширину границы:
Кажется, все еще есть заполненный прямоугольник "сверху" скругленный прямоугольник, нарисованный созданным слоем и закрывающий закругленный угол.
Вы можете достичь того, что хотите, просто рисуя с помощью UIBezierPath
s:
override func draw(_ rect: CGRect) {
let r = self.bounds.size.height / 2
let path = UIBezierPath(roundedRect: self.bounds,
byRoundingCorners: [.topLeft, .topRight],
cornerRadii: CGSize(width: r, height: r))
path.lineWidth = 1.5
UIColor.red.setStroke()
path.stroke()
}