Вы не описываете, чего вы действительно хотите достичь.Я предполагаю, что вы хотите иметь прямоугольник с тремя круглыми отверстиями.
Главное, чтобы понять, что путь может состоять из нескольких подпутей .Каждый подпуть может быть либо закрыт (он заканчивается там, где он начался), либо open (он заканчивается в точке, отличной от того, с которой он начинался).Внутри подпути все отрезки соединены.
Для того, что вы пытаетесь достичь, требуется несколько закрытых подпутей.В противном случае вы не сможете получить несвязанные фигуры.
В одном из ваших примеров очевидно, что три круга были автоматически соединены линиями, что привело к образованию трехглавой.Документация addArc
упоминает это:
Если путь уже содержит подпуть, этот метод добавляет линию, соединяющую текущую точку с начальной точкой дуги.
Чтобы создать новый подпуть, либо переместите к началу следующего подпути (используя move
), либо закройте предыдущую (используяcloseSubpath
).Поэтому средняя часть вашего кода должна выглядеть так:
let path = CGMutablePath()
path.addRect(CGRect(origin: .zero, size: UIScreen.main.bounds.size))
path.closeSubpath
path.addArc(center: CGPoint(x: 20, y: 20),
radius: 10,
startAngle: 0, endAngle: 2 * .pi,
clockwise: false)
path.closeSubpath
path.addArc(center: CGPoint(x: 220, y: 20),
radius: 10,
startAngle: 0, endAngle: 2 * .pi,
clockwise: false)
path.closeSubpath
path.addArc(center: CGPoint(x: 100, y: 300),
radius: 12,
startAngle: 0, endAngle: 2 * .pi,
clockwise: false)
path.closeSubpath