UIBezierPath的使用

来源:互联网 发布:r语言绘制矩阵散点图 编辑:程序博客网 时间:2024/05/22 03:27

1. 使用UIBezierPath绘制多边形

复制代码
    // 获取path    UIBezierPath *aPath = [UIBezierPath bezierPath];        // 设定起始点    [aPath moveToPoint:CGPointMake(0.0f, 0.0f)];        // 添加点    [aPath addLineToPoint:CGPointMake(100.0f, 100.0f)];    [aPath addLineToPoint:CGPointMake(0.f, 50.f)];        // 闭合path    [aPath closePath];
复制代码

2. 使用UIBezierPath绘制圆形

复制代码
    // 将常数转换为度数    #define   DEGREES(degrees)  ((3.14159265359f * degrees)/ 180.f)        // 获取path    UIBezierPath *aPath = \    [UIBezierPath bezierPathWithArcCenter:CGPointMake(50, 50) // 圆的中心                                   radius:50.f                // 圆的半径                               startAngle:DEGREES(0)          // 起始点                                 endAngle:DEGREES(360)        // 结束点                                clockwise:YES];               // 顺时针
复制代码

3. 使用UIBezierPath绘制矩形

    // 获取path    UIBezierPath *aPath = [UIBezierPath bezierPathWithRect:CGRectMake(0, 0, 100, 100)];

4. 使用UIBezierPath绘制椭圆

    // 获取path    UIBezierPath *aPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 50, 70)];

5. 使用UIBezierPath绘制圆角矩形

    // 获取path    UIBezierPath *aPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 100, 100)                                                     cornerRadius:10.f];

6. 使用UIBezierPath绘制带部分圆角的矩形

    // 获取path    UIBezierPath *aPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 100, 100)                                                byRoundingCorners:UIRectCornerTopLeft                                                      cornerRadii:CGSizeMake(100, 100)];

7. 使用UIBezierPath绘制不规则曲线1

复制代码
    // 获取path    UIBezierPath *aPath = [UIBezierPath bezierPath];        // 设定起始点    [aPath moveToPoint:CGPointMake(0.0f, 0.0f)];        // 添加一个不规则点    [aPath addCurveToPoint:CGPointMake(100.f, 100.f)             controlPoint1:CGPointMake(50.f, 0.f)     // 开始点             controlPoint2:CGPointMake(0.f, 50.f)];   // 结束点        // 添加一个点    [aPath addLineToPoint:CGPointMake(0.0f, 100.f)];        // 闭合path    [aPath closePath];
复制代码

8. 使用UIBezierPath绘制不规则曲线2

复制代码
    // 获取path    UIBezierPath *aPath = [UIBezierPath bezierPath];        // 设定起始点    [aPath moveToPoint:CGPointMake(0.0f, 0.0f)];        // 添加一个不规则点    [aPath addQuadCurveToPoint:CGPointMake(100.f, 100.f)                  controlPoint:CGPointMake(0.f, 90.f)];   // 控制点        // 添加一个点    [aPath addLineToPoint:CGPointMake(0.0f, 100.f)];        // 闭合path    [aPath closePath];
复制代码

9. 使用path与CAShapeLayer配合制作mask遮罩效果(path闭环里面的填充区域就是作为遮罩使用的)

复制代码
    // 创建一个view    UIView *showView = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 100)];    showView.backgroundColor = [UIColor greenColor];    showView.layer.contents = (__bridge id)([UIImage imageNamed:@"1"].CGImage);    // 创建一个椭圆的path    UIBezierPath *aPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, 100, 100)];    // 创建一个CAShapeLayer并获取椭圆的path    CAShapeLayer *layer = [CAShapeLayer layer];    layer.path = aPath.CGPath;        // 把这个CAShapeLayer添加为mask    showView.layer.mask = layer;
复制代码

10. 使用Core Graphics函数去修改path
    UIBezierPath类只是CGPathRef数据类型和path绘图属性的一个封装。虽然通常我 们可以用UIBezierPath类的方法去添加直线段和曲线段,UIBezierPath类还提供了一个属性CGPath,我们可以用来直接修改底层的 path data type。如果我们希望用Core Graphics 框架函数去创建path,则我们要用到此属性。
    有两种方法可以用来修改和UIBezierPath对象相关的path。可以完全的使用Core Graphics函数去修改path,也可以使用Core Graphics函数和UIBezierPath函数混合去修改。第一种方法在某些方面相对来说比较容易。我们可以创建一个CGPathRef数据类型, 并调用我们需要修改path信息的函数。
下面的代码就是赋值一个新的CGPathRef给UIBezierPath对象。
如 果我们使用Core Graphics函数和UIBezierPath函数混合方法,我们必须小心的移动path 信息在两者之间。因为UIBezierPath类拥有自己底层的CGPathRef data type,我们不能简单的检索该类型并直接的修改它。相反,我们应该生成一个副本,然后修改此副本,然后赋值此副本给CGPath属性,如下代码:
Mixing Core Graphics and UIBezierPath calls

 

 
 

 

0 0
原创粉丝点击