没有合适的资源?快使用搜索试试~ 我知道了~
UIBezierPath精讲
资源详情
资源评论
资源推荐
UIBezierPath 精讲
学习 UIBezierPath 画图
•••••••••••••首先说明一下 CAShapeLayer 和 UIBezierPath 的关系•••••••••
CAShapeLayer 是基于贝塞尔曲线而存在的, 如果没有贝塞尔曲线提供路径来
画出图形, CAShapeLayer 就没有存在的意义,CAShapeLayer 可以使得不用
在 drawRect:方法中实现画图.
另外, CAShapeLayer 是属于 CoreAnimation 框架的, 是基于 GPU 的来进行
渲染的, 不比使用 CoreGraphic 框架, 是基于 CPU 来渲染的, 所以
CAShapeLayer 效率相对比较高一些
••••••••••••••••••••••••••••••••••••••••••••••••••••••••••
••••••••••
§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§
2. UIBezierPath 和 Core Graphics 的关系
UIBezierPath 和 Core Graphics 函数绘制差不多,只不过不用当
前上下文就可以直接绘制;一般情况下都是使用 UIBezierPath 来
绘制,
只有在 UIBezierPath 不能实现时才用 Core Graphics 函数。§§§§§§
§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§§
使用 UIBezierPath 可以创建基于矢量的路径,此类是 Core Graphics 框架关于路径的封
装。使用此类可以定义简单的形状,如椭圆、矩形或者有多个直线和曲线段组成的形状等。
UIBezierPath 是 CGPathRef 数据类型的封装。如果是基于矢量形状的路径,都用直线和曲
线去创建。我们使用直线段去创建矩形和多边形,使用曲线去创建圆弧(arc)、圆或者其他复
杂的曲线形状。
使用 UIBezierPath 画图步骤:
1. 创建一个 UIBezierPath 对象
2. 调用-moveToPoint:设置初始线段的起点
3. 添加线或者曲线去定义一个或者多个子路径
4. 改变 UIBezierPath 对象跟绘图相关的属性。如,我们可以设置画笔的属性、填充样
式等
UIBezierPath 创建方法介绍
我们先看看 UIBezierPath 类提供了哪些创建方式,这些都是工厂方法,直接使用即可。
+ (instancetype)bezierPath; + (instancetype)bezierPathWithRect:
(CGRect)rect; + (instancetype)bezierPathWithOvalInRect:(CGRect)rect;
+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect
cornerRadius:(CGFloat)cornerRadius; +
(instancetype)bezierPathWithRoundedRect:(CGRect)rect
byRoundingCorners:(UIRectCorner)corners
cornerRadii:(CGSize)cornerRadii; +
(instancetype)bezierPathWithArcCenter:(CGPoint)center
radius:(CGFloat)radius startAngle:
(CGFloat)startAngle endAngle:
(CGFloat)endAngle clockwise:
(BOOL)clockwise; + (instancetype)bezierPathWithCGPath:
(CGPathRef)CGPath;
下面我们一个一个地介绍其用途。
+ (instancetype)bezierPath;
这个使用比较多,因为这个工厂方法创建的对象,我们可以根据我们的需要任意定制样式,可
以画任何我们想画的图形。
+ (instancetype)bezierPathWithRect:(CGRect)rect;
这个工厂方法根据一个矩形画贝塞尔曲线。
+ (instancetype)bezierPathWithOvalInRect:(CGRect)rect;
这个工厂方法根据一个矩形画内切曲线。通常用它来画圆或者椭圆。
+ (instancetype)bezierPathWithRoundedRect:(CGRect)rect
cornerRadius:(CGFloat)cornerRadius; +
(instancetype)bezierPathWithRoundedRect:(CGRect)rect
byRoundingCorners:(UIRectCorner)corners
cornerRadii:(CGSize)cornerRadii;
第一个工厂方法是画矩形,但是这个矩形是可以画圆角的。第一个参数是矩形,第二个参数是
圆角大小。
第二个工厂方法功能是一样的,但是可以指定某一个角画成圆角。像这种我们就可以很容易地
给 UIView 扩展添加圆角的方法了。
+ (instancetype)bezierPathWithArcCenter:(CGPoint)center
radius:(CGFloat)radius startAngle:
(CGFloat)startAngle endAngle:
(CGFloat)endAngle clockwise:
(BOOL)clockwise;
这个工厂方法用于画弧,参数说明如下:
center: 弧线中心点的坐标
radius: 弧线所在圆的半径
startAngle: 弧线开始的角度值
endAngle: 弧线结束的角度值
clockwise: 是否顺时针画弧线
温馨提示:我们下面的代码都是在自定义的 BezierPathView 类中的-
(void)drawRect:(CGRect)rect 方法中调用
画三角形
先看效果图:
image
剩余20页未读,继续阅读
ze6799
- 粉丝: 0
- 资源: 9
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0