desenhar arco em relevo usando gráficos do núcleo
Eu estou tentando implementar um controle deslizante personalizado, como mostrado na figura abaixo.
o que eu fiz até agora parece algo como isto
por favor me ajude a desenhar o arco com tal efeito. meu código é como abaixo, o que estou fazendo é desenhar o arco usando CGContextAddArc com largura de linha kLineWidth.
<code>- (void)drawThumbAtPoint:(CGPoint)sliderButtonCenterPoint inContext: (CGContextRef)context { UIGraphicsPushContext(context); CGContextBeginPath(context); CGContextMoveToPoint(context, sliderButtonCenterPoint.x, sliderButtonCenterPoint.y); CGImageRef imageRef = [UIImage imageNamed:@"circle25.png"].CGImage; CGRect rect = CGRectMake(sliderButtonCenterPoint.x - kThumbRadius, sliderButtonCenterPoint.y - kThumbRadius, kThumbRadius*2, kThumbRadius*2); CGContextDrawImage(context, rect, imageRef); //CGContextAddArc(context, sliderButtonCenterPoint.x, sliderButtonCenterPoint.y, kThumbRadius, 0.0, 2*M_PI, NO); CGContextFillPath(context); UIGraphicsPopContext(); } - (CGPoint)drawArcTrack:(float)track atPoint:(CGPoint)center withRadius:(CGFloat)radius inContext:(CGContextRef)context { UIGraphicsPushContext(context); CGContextBeginPath(context); float angleFromTrack = translateValueFromSourceIntervalToDestinationInterval(track, self.minimumValue, self.maximumValue, 0, M_PI/3);// 2*M_PI CGFloat startAngle = (4*M_PI)/3; CGFloat endAngle = startAngle + angleFromTrack; CGContextAddArc(context, center.x, center.y, radius, startAngle, endAngle, NO); CGPoint arcEndPoint = CGContextGetPathCurrentPoint(context); CGContextStrokePath(context); UIGraphicsPopContext(); return arcEndPoint; } - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGPoint middlePoint; middlePoint.x = self.bounds.origin.x + self.bounds.size.width/2; middlePoint.y = self.bounds.origin.y + self.bounds.size.width; CGContextSetLineWidth(context, kLineWidth); CGFloat radius = [self sliderRadius]; [self.maximumTrackTintColor setStroke]; [self drawArcTrack:self.maximumValue atPoint:middlePoint withRadius:radius inContext:context]; [self.minimumTrackTintColor setStroke]; self.thumbCenterPoint = [self drawArcTrack:self.value atPoint:middlePoint withRadius:radius inContext:context]; [self.thumbTintColor setFill]; [self drawThumbAtPoint:self.thumbCenterPoint inContext:context]; } </code>