博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UIBezierPath的使用(持续更新)
阅读量:6579 次
发布时间:2019-06-24

本文共 3604 字,大约阅读时间需要 12 分钟。

UIBezierPath的使用

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

 

 
 

转载地址:http://axbno.baihongyu.com/

你可能感兴趣的文章
安装ESXI 5.5卡在LSI_MR3.V00解决方案
查看>>
在SQL Server 2014里可更新的列存储索引 (Updateable Column Store Indexes)
查看>>
centos 7 卸载 mariadb 的正确命令
查看>>
NSString 的常用操作
查看>>
poj 1274The Perfect Stall
查看>>
[Jmeter系列]Jmeter源码编译步骤(转)
查看>>
关于Windows API、CRT和STL二三事
查看>>
WordPress建站 新手入门
查看>>
让nodeJS支持ES6的词法----babel的安装和使用
查看>>
深入理解java异常处理机制
查看>>
python【1】-基础知识
查看>>
org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER
查看>>
Android Canvas drawText实现中文垂直居中
查看>>
PHP多进程编程(2):管道通信
查看>>
【HTML5】Canvas和SVG的区别
查看>>
李洪强经典面试题8
查看>>
wireshark怎么抓包、wireshark抓包详细图文教程
查看>>
mysql 源码调试方法
查看>>
Asp.Net微信登录-手机网站APP应用
查看>>
用git管理自己读的书
查看>>