UIBezierPath画圆弧的记录

原文链接:http://blog.csdn.net/lgm252008/article/details/34819743、


文中的图很重要!!!


根据下文,完成了下图的mask:


代码如下:

CGSize size = self.size;
// 画路径
UIBezierPath *maskPath = [UIBezierPath bezierPath];

// bottom line
[maskPath moveToPoint:CGPointMake(size.width, 0)];
[maskPath addLineToPoint:CGPointMake(size.width, 91)];
[maskPath addArcWithCenter:CGPointMake(size.width, 99.f)
radius:PIXEL_8
startAngle:1.5*M_PI endAngle:0.5*M_PI
clockwise:NO];
[maskPath addLineToPoint:CGPointMake(size.width, size.height)];

[maskPath addLineToPoint:CGPointMake(0, size.height)];

[maskPath addLineToPoint:CGPointMake(0, 107.f)];
[maskPath addArcWithCenter:CGPointMake(0, 99.f)
radius:PIXEL_8
startAngle:0.5*M_PI endAngle:1.5*M_PI
clockwise:NO];
[maskPath addLineToPoint:CGPointMake(0, 0)];

[maskPath addLineToPoint:CGPointMake(size.width, 0)];

[maskPath closePath];

// 画出 形状
CAShapeLayer *maskLayer = [CAShapeLayer new];
maskLayer.path = maskPath.CGPath;
self.layer.mask = maskLayer;

------------------华丽的分割线-------------------


UIBezierPath通过

- (void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise

可以画出一段弧线。

看下各个参数的意义:

center:圆心的坐标

radius:半径

startAngle:起始的弧度

endAngle:圆弧结束的弧度

clockwise:YES为顺时针,No为逆时针

方法里面主要是理解startAngle与endAngle,刚开始我搞不清楚一段圆弧从哪算起始和终止,比如弧度为0的话,是从上下左右哪个点开始算

看了下面这张图就明了了


看出0Pi就是指圆最右边开始计算的,顺时针依次为M_PI/2,M_PI,M_PI*1.5

明白这个,用BezierPath画圆弧就简单了

比如要画上图加粗的那段就是:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. UIBezierPath *path = [[UIBezierPath alloc] init];    
  2. [path addArcWithCenter:center    
  3.                 radius:radius    
  4.             startAngle:M_PI*1.1    
  5.               endAngle:M_PI*1.9    
  6.              clockwise:YES];    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值