Я дуга, которую я нарисовал следующим образом:IOS: CoreGraphics - Отсечение дуги с CGContextClip и lineCap = .Round
func drawBackgroundMask(context: CGContextRef,
center: CGPoint,
radius: CGFloat,
lineWidth: CGFloat,
startAngle: CGFloat,
endAngle: CGFloat) {
let adjustedRadius: CGFloat = radius - (lineWidth/2) - 0
CGContextSetLineWidth(context, lineWidth)
CGContextSetLineCap(context, .Round)
CGContextAddArc(context,
center.x,
center.y,
adjustedRadius,
startAngle,
endAngle,
0)
//CGContextClosePath(context)
//CGContextClip(context)
CGContextStrokePath(context)
}
С учетом указанных выше линий закомментированными, я могу создать следующее:
Однако, если я пытаюсь использовать обнаженную форму в качестве маски раскомментировава-из двух строк коды выше, а затем закрашивания фона твердых, я получить другой результат:
func drawBackgroundMask(context: CGContextRef,
center: CGPoint,
radius: CGFloat,
lineWidth: CGFloat,
startAngle: CGFloat,
endAngle: CGFloat) {
let adjustedRadius: CGFloat = radius - (lineWidth/2) - 0
CGContextSetLineWidth(context, lineWidth)
CGContextSetLineCap(context, .Round)
CGContextAddArc(context,
center.x,
center.y,
adjustedRadius,
startAngle,
endAngle,
0)
CGContextClosePath(context)
CGContextClip(context)
CGContextStrokePath(context)
CGContextSetRGBFillColor(context, 100.0/255.0, 100.0/255.0, 100.0/255.0, 1.0);
CGContextFillRect(context, rect);
}
Может кто-нибудь объяснить мне, почему использование нарисованных дуг в качестве обтравочной маски вызывают его рассматривать иначе, чем это рисуется? Кроме того, может ли кто-нибудь показать мне правильный способ создания маски в форме дуги с закругленными концами? Эта проблема является частью более крупного элемента управления, над которым я работаю, где я должен закрепить другую дугу с формой дугового шоу.