博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UIBezierPath
阅读量:6256 次
发布时间:2019-06-22

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

hot3.png

UIBezierPath对象是CGPathRef数据类型的封装。一个UIBezierPath对象是一个完整的路径,包括一个或者多个子路径。

使用步骤:

1、创建一个UIBezierPath对象

2、设置线的属性(宽度,颜色,端点样式,连接点样式)

3、使用方法moveToPoint:去设置初始线段的起点。

4、添加line或者curve去定义一个或者多个subpaths。

5、stroke或者fill

- (void)drawRect:(CGRect)rect {#pragma mark - 画三角形    // 创建一个UIBezierPath对象    UIBezierPath *path = [UIBezierPath bezierPath];    // 设置线的颜色    [[UIColor redColor] set];    // 设置线的宽度    path.lineWidth = 6;    // 线端点的样式    path.lineCapStyle = kCGLineJoinRound;    // 连接点的样式    path.lineJoinStyle = kCGLineJoinBevel;    [path moveToPoint:CGPointMake(20, 70)];    [path addLineToPoint:CGPointMake(100, 80)];    [path addLineToPoint:CGPointMake(20, 90)];    // 闭合路径    [path closePath];    [path stroke];#pragma mark - 画矩形    UIBezierPath *path2 = [UIBezierPath bezierPathWithRect:CGRectMake(140, 100, 50, 90)];    [path2 stroke];    #pragma mark - 画圆(如果是正方形画出来的是圆,如果是长方形画出来的是椭圆)    UIBezierPath *path3 = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(20, 100, 100, 100)];    [path3 stroke];    #pragma mark - 画扇形    UIBezierPath *path4 = [UIBezierPath bezierPathWithArcCenter:CGPointMake(200, 200) radius:50 startAngle:0 endAngle:M_PI * 0.4 clockwise:1];    [path4 addLineToPoint:CGPointMake(200, 200)];    [path4 closePath];    [path4 stroke];    #pragma mark - 画文字    NSString *str = @"附近的开始啦;热Ian; 就";    NSMutableDictionary *dict = [NSMutableDictionary dictionary];    [dict setObject:[UIFont systemFontOfSize:20] forKey:NSFontAttributeName];    [str drawInRect:CGRectMake(100, 200, 100, 100) withAttributes:dict];    #pragma mark - 画图片    UIImage *image = [UIImage imageNamed:@"icon_153"];    [image drawInRect:CGRectMake(200, 100, 80, 80)];  }

注:画扇形的时候clockwise的意思是“是否是顺时针”, yes:顺时针;NO:逆时针

绘制二次、三次曲线

#pragma mark - 绘制二次曲线    // 二次曲线由一个起点,一个终点,一个控制点共同决定    UIBezierPath *pathTwo = [UIBezierPath bezierPath];    pathTwo.lineWidth = 5;    [pathTwo moveToPoint:CGPointMake(20, 300)];    [pathTwo addQuadCurveToPoint:CGPointMake(200, 300) controlPoint:CGPointMake(110, 400)];    [pathTwo stroke];    #pragma mark - 绘制三次曲线    // 三次曲线由一个起点,一个终点,两个控制点共同决定    UIBezierPath *pathThree = [UIBezierPath bezierPath];    pathThree.lineWidth = 6;    [pathThree moveToPoint:CGPointMake(30, 430)];    [pathThree addCurveToPoint:CGPointMake(300, 430) controlPoint1:CGPointMake(50, 200) controlPoint2:CGPointMake(260, 600)];    [pathThree stroke];

以上所有图形的效果图:

- (void)drawRect:(CGRect)rect {    /**     *  根据一个Rect画一个圆角矩形曲线   当Rect为正方形时且Radius等于边长一半时画的是一个圆     *  @param rect         CGRect一个矩形     *  @param cornerRadius 圆角半径     */    UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(80, 100, 50, 30) cornerRadius:15];    path.lineWidth = 3;    [[UIColor redColor] set];    [path fill];    [[UIColor lightGrayColor] set];    [path stroke];        /**     *  根据一个Rect针对四角中的某个或多个角设置圆角     *     *  @param rect        CGRect一个矩形     *  @param corners     允许指定矩形的部分角为圆角,而其余的角为直角,取值来自枚举     *  @param cornerRadii  指定了圆角的半径,这个参数的取值是 CGSize 类型,也就意味着这里需要给出的是椭圆的半径。     */    UIBezierPath *path002 = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(150, 100, 60, 30) byRoundingCorners:UIRectCornerTopRight | UIRectCornerBottomLeft cornerRadii:CGSizeMake(15, 15)];    path002.lineWidth = 3;    [[UIColor redColor] set];    [path002 fill];    [[UIColor lightGrayColor] set];    [path002 stroke];}

效果:

 

 

转载于:https://my.oschina.net/yejiexiaobai/blog/789979

你可能感兴趣的文章
使用LVS实现负载均衡原理及安装配置详解
查看>>
hdu 3449 Consumer (依赖01背包)
查看>>
c#public、private、protected、internal、protected internal
查看>>
hdoj-5099-Comparison of Android versions
查看>>
小波变换简单介绍(2)
查看>>
Dubbo -- 系统学习 笔记 -- 示例 -- 线程模型
查看>>
Dubbo -- 系统学习 笔记 -- 示例 -- 多注册中心
查看>>
使用C++实现学生管理系统
查看>>
BroadcastReceiver类
查看>>
大杂烩 -- 查找单向链表倒数第m个元素
查看>>
SQL笔记 --- 数据库设计步骤(转)
查看>>
cocos2d-iphone 动作
查看>>
[Preact] Integrate react-router with Preact
查看>>
函数指针的说明
查看>>
Python操作redis学习系列之(集合)set,redis set详解 (六)
查看>>
Linux时间子系统之二:表示时间的单位和结构
查看>>
leetcode 221: Maximal Square
查看>>
Oracle更新时间字段
查看>>
Android 四大组件学习之ContentProvider二
查看>>
使用jcaptcha插件生成验证码
查看>>