0
A
回答
1
上面的圖片只是兩個圓圈 - 一個是在另一個圓孔中切割。這與您想要完成的目標並不相近。您需要使用CGContextAddArc
。
做這樣的事情:向內
- 打開路徑
- 移動到一個點
- 開始繪製弧
CGContextAddArc
- 移動(和畫線),以圓弧中心切片的所需寬度
- 繪製反向弧
- 關閉路徑
0
使用中間點算法,如果你想畫圈圈,使同心圓你的社交圈半徑提供差異
0
我中有你想要的東西:
// CircularProgress.h
#import <UIKit/UIKit.h>
@interface CircularProgress : UIView
@property (nonatomic, assign) CGFloat percent;
@end
// CircularProgress.m
#import "CircularProgress.h"
@implementation CircularProgress
- (void)setPercent:(CGFloat)percent
{
_percent = percent;
[self setNeedsDisplay];
}
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect bounds = [self bounds];
CGPoint center = CGPointMake(bounds.size.width/2.0, bounds.size.height/2.0);
CGFloat lineWidth = 8.0;
CGFloat innerRadius = (bounds.size.width/2.0) - lineWidth;
CGFloat outerRadius = innerRadius + lineWidth;
CGFloat startAngle = -((float)M_PI/2.0);
CGFloat endAngle = ((self.percent/100.0) * 2 * (float)M_PI) + startAngle;
UIBezierPath *processBackgroundPath = [UIBezierPath bezierPath];
processBackgroundPath.lineWidth = lineWidth;
CGFloat radius = (self.bounds.size.width - lineWidth)/2.0;
CGFloat fullAngle = (2.0 * (float)M_PI) + startAngle;
[processBackgroundPath addArcWithCenter:center radius:radius startAngle:startAngle endAngle:fullAngle clockwise:YES];
[[UIColor whiteColor] set];
[processBackgroundPath stroke];
CGMutablePathRef progressPath = CGPathCreateMutable();
CGPathMoveToPoint(progressPath, NULL, center.x, center.y - innerRadius);
CGPathAddArc(progressPath, NULL, center.x, center.y, innerRadius, startAngle, endAngle, YES);
CGPathAddArc(progressPath, NULL, center.x, center.y, outerRadius, endAngle, startAngle, NO);
CGPathCloseSubpath(progressPath);
UIColor *aColor = [UIColor colorWithRed:0.941 green:0.776 blue:0.216 alpha:1.0];
[aColor setFill];
CGContextAddPath(context, progressPath);
CGContextFillPath(context);
CGPathRelease(progressPath);
}
@end
你只需要創建CircularProgress
所需大小的類(它應該是正方形)的對象,並將其作爲子視圖添加到您的主視圖。然後只需更改percent
值並享受結果。顏色和寬度現在被硬編碼,因爲它不是完成的控件,但你應該抓住這個想法。
相關問題
- 1. Silverlight - 如何繪製弧線?
- 2. 弧線,KineticJS繪製
- 3. 如何用Qt繪製弧線?
- 4. 使用核心圖形繪製浮雕圓弧
- 5. 在Silverlight中繪製弧線
- 6. 繪製弧線cocos2d-html5
- 7. 如何在vml中繪製弧線
- 8. 如何僅繪製這部分弧線?
- 9. 如何在swift中繪製弧線3
- 10. 如何在OpenGL中繪製弧線
- 11. Cocos2d v3:你如何繪製弧線?
- 12. 如何使用核心繪圖沿X軸繪製NSDate
- 13. 如何繪製2D弧
- 14. 在覈心圖中繪製多線圖
- 15. 用Core Graphics繪製圓弧時繪製的額外線條
- 16. 如何在MKMapView上使用MKOverlayView繪製圓弧/曲線線
- 17. 繪製popOver使用核心圖形
- 18. 繪製的SVG弧
- 19. 在覈心繪圖中繪製切線圖
- 20. 如何使用蟒蛇繪製笑臉(弧線)
- 21. 如何繪製使用SVG元素的90度弧線?
- 22. 如何在createjs中使用弧線繪製圓形?
- 23. excanvas中的繪製弧IE8到2Pi不繪製弧
- 24. 如何用CoreGraphics繪製橢圓弧?
- 25. Java如何使用繪製弧和連接到另一條弧
- 26. 使用點向中心繪製線條
- 27. 繪製半徑增加的弧線?
- 28. 如何通過核心圖或核心圖形繪製Ven圖?
- 29. 在不使用核心繪圖庫的情況下繪製折線圖
- 30. 在ios上使用核心繪圖在一條線上繪製不同顏色
<插入關於使用弧繪製弧的笑話> – Fonix 2013-05-08 07:37:11
看看這篇文章http://www.raywenderlich.com/33193/core-graphics-tutorial-arcs-and-paths – tkanzakic 2013-05-08 08:04:42