作者热门文章
- objective-c - iOS 5 : Can you override UIAppearance customisations in specific classes?
- iphone - 如何将 CGFontRef 转换为 UIFont?
- ios - 以编程方式关闭标记的信息窗口 google maps iOS
- ios - Xcode 5 - 尝试验证存档时出现 "No application records were found"
我做了如下的弧线。通过指定半径、起始角、结束角
CGContextAddArc(ctx, self.frame.size.width/2 , self.frame.size.height/2,
self.radius, 2*M_PI, 3*M_PI/2-ToRad(angle), 0);
现在我想让拱形的角变圆。所以需要在两端画圆圈。因为我使用的是框架尺寸,所以给常量是行不通的。
最佳答案
尝试将图形状态参数 CGContextSetLineJoin 设置为圆形:CGContextSetLineCap(ctx, kCGLineCapRound);
这是我根据您的问题进行的研究。该方法位于 drawRect: 方法中,我写了一个简短的方法来抽象它,以便只给该方法参数 startAngle、endAngle 和 radius。当然不能细化。
我为您提供了此方法输出的图片。
- (void)drawRect:(CGRect)rect {
float startAngle = 0;
float endAngle = 60;
float radius = 50.0;
CGContextRef ctx = [self drawRoundedArcWithStartAngle:startAngle endAngle:endAngle radius:radius];
CGContextStrokePath(ctx);
}
- (CGContextRef)drawRoundedArcWithStartAngle:(float)startAngle endAngle:(float)endAngle radius:(float)radius {
CGContextRef ctx = UIGraphicsGetCurrentContext();
// [CGContextAddArc(ctx, self.frame.size.width/2 , self.frame.size.height/2, radius, 2*M_PI, 3*M_PI/2-(angle * M_PI / 180), 0)];
CGContextAddArc(ctx, self.frame.size.width/ 2, self.frame.size.height/2, radius, (startAngle * M_PI / 180), (endAngle * M_PI / 180), 0);
CGContextSetRGBStrokeColor(ctx, 0.0, 0.0, 0.0, 1.0);
CGContextSetLineWidth(ctx, 20.0f);
CGContextSetLineCap(ctx, kCGLineCapRound);
return ctx;
}
希望对您有所帮助!
关于ios - 如何为 Arc 做角,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41375097/
我是一名优秀的程序员,十分优秀!