1. 畫圓
需要添加shapeLayer
CGPoint layerCenter = CGPointMake(CGRectGetWidth(self.view.frame)/2, CGRectGetWidth(self.view.frame)/2);
CAShapeLayer *layer = [CAShapeLayer layer];
layer.frame = self.view.bounds;
layer.lineWidth = 3.0; //線條寬度
layer.strokeColor = [UIColor redColor].CGColor; //線條顏色
layer.fillColor = [UIColor cyanColor].CGColor; //填充色
self.path = [UIBezierPath bezierPath];
[self.path addArcWithCenter:layerCenter radius:100 startAngle:0.0 endAngle:M_PI*2 clockwise:YES];
layer.path = self.path.CGPath;
// UIGraphicsBeginImageContext(self.view.bounds.size);
// [self.path stroke];
// [self.path fill];
// UIGraphicsEndImageContext();
//
[self.view.layer addSublayer:layer];
注:
UIBezierPath通過
- (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise
可以畫出一段弧線。
clockwise:YES爲順時針,No爲逆時針
圖中的這段弧線對應的就是
[path addArcWithCenter:center
radius:radius
startAngle:M_PI*1.1
endAngle:M_PI*1.9
clockwise:YES];
________________________________________________________
貝塞爾曲線中的一些方法
UIBezierPath 包含了幾個特殊形狀的類方法,很容易使用。
// 創建矩形
+ (UIBezierPath *)bezierPathWithRect:(CGRect)rect
// 創建圓角矩形
+ (UIBezierPath *)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius
// 創建矩形內切圓
+ (UIBezierPath *)bezierPathWithOvalInRect:(CGRect)rect
// 創建弧形
+ (UIBezierPath *)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise
除了這些閉合的特殊路徑,也有一些方法用來添加子路徑。
// 添加直線
- (void)addLineToPoint:(CGPoint)point
// 添加弧形線段
- (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise
// 添加二階貝塞爾曲線
- (void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint
// 添加三階貝塞爾曲線
- (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2
想詳細瞭解關於貝塞爾曲線的 階數 問題,可以轉至http://www.cnblogs.com/jay-dong/archive/2012/09/26/2704188.html