• UIBezierPath


    可以创建基于矢量的路径,此类是Core Graphics框架关于路径的封装。使用此类可以定义简单的形状,如椭圆、矩形或者有多个直线和曲线段组成的形状等。

    创建对象

    工厂方法

    • +(instancetype)bezierPath;
    • +(instancetype)bezierPathWithRect:(CGRect)rect;
      • 根据rect画出矩形路径
    • +(instancetype)bezierPathWithOvalInRect:(CGRect)rect;
      • 画出rect的内切圆(椭圆)
    • +(instancetype)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius;
      • 根据rect画出矩形路径
      • cornerRadius参数是圆角大小
    • +(instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise;
      • 画圆弧
      • center: 弧线中心点的坐标
      • radius: 弧线所在圆的半径
      • startAngle: 弧线开始的角度值
      • endAngle: 弧线结束的角度值
      • clockwise: 是否顺时针画弧线

    构造路径

    • -(void)moveToPoint:(CGPoint)point;
      • 置初始线段的起点 ,将point赋值为当前点
    • -(void)addLineToPoint:(CGPoint)point;
      • 将当前点和 point点连线,并将point赋值为当前点
    • -(void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2;
      • 绘制贝塞尔曲线
      • 当前点和 endPoint为贝塞尔曲线的两个端点
      • controlPoint1和controlPoint2牵制曲线形状

    如图:

    • -(void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint;
      • 绘制贝塞尔曲线
      • 当前点和 endPoint为贝塞尔曲线的两个端点
      • controlPoint牵制曲线形状

    如图:

    • -(void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise
      • 画圆弧
      • center: 弧线中心点的坐标
      • radius: 弧线所在圆的半径
      • startAngle: 弧线开始的角度值
      • endAngle: 弧线结束的角度值
      • clockwise: 是否顺时针画弧线
    • -(void)closePath
      • 在最后一个点和第一个点之间画一条线段

    画笔属性

    • @property(nonatomic) CGFloat lineWidth;
      • 画笔宽度
    • @property(nonatomic) CGLineCap lineCapStyle;
      • 设置线条拐角帽的样式
      • 有以下三个值
        • kCGLineCapButt (默认的)
        • kCGLineCapRound (轻微圆角)
        • kCGLineCapSquare (正方形)
    • @property(nonatomic) CGLineJoin lineJoinStyle;
      • 两条线连结点的样式
      • 有以下三个值
        • kCGLineJoinMiter, (默认的表示斜接)
        • kCGLineJoinRound, (圆滑衔接)
        • kCGLineJoinBevel (斜角连接)

    示例:

    使用UIBezierPath画图步骤:

    1. 创建一个UIBezierPath对象
    2. 调用-moveToPoint:设置初始线段的起点
    3. 添加线或者曲线去定义一个或者多个子路径
    4. 改变UIBezierPath对象跟绘图相关的属性。如,我们可以设置画笔的属性、填充样式等

    三角形

    // 画三角形
    - (void)drawTrianglePath {
    UIBezierPath *path = [UIBezierPath bezierPath];
    [path moveToPoint:CGPointMake(20, 20)];
    [path addLineToPoint:CGPointMake(self.frame.size.width - 40, 20)];
    [path addLineToPoint:CGPointMake(self.frame.size.width / 2, self.frame.size.height - 20)];
    // 最后的闭合线是可以通过调用closePath方法来自动生成的,也可以调用-addLineToPoint:方法来添加
    //  [path addLineToPoint:CGPointMake(20, 20)];
    [path closePath];
    // 设置线宽
    path.lineWidth = 1.5;
    // 设置填充颜色
    UIColor *fillColor = [UIColor greenColor];
    [fillColor set];
    [path fill];
    // 设置画笔颜色
    UIColor *strokeColor = [UIColor blueColor];
    [strokeColor set];
    // 根据我们设置的各个点连线
    [path stroke];
    }
  • 相关阅读:
    PAT 甲级 1041 Be Unique (20 分)(简单,一遍过)
    [精]Odoo 8.0深入浅出开发教程-模块开发基础
    iOS开发- UILabel 自己主动换行 及 高度自适应
    Android
    权限管理表结构设计
    创建SQL语句_面试
    Hasen的linux设备驱动开发学习之旅--时钟
    关于源程序到可运行程序的过程
    微信服务号 微信支付开发
    MongoDB基础入门视频教程
  • 原文地址:https://www.cnblogs.com/sunyanyan/p/5341611.html
Copyright © 2020-2023  润新知