美文网首页
贝塞尔曲线(UIBezierPath)属性、方法汇总?

贝塞尔曲线(UIBezierPath)属性、方法汇总?

作者: 宋进锋 | 来源:发表于2017-06-08 14:45 被阅读16次

    UIBezierPath主要用来绘制矢量图形,它是基于Core Graphics对CGPathRef数据类型和path绘图属性的一个封装,所以是需要图形上下文的(CGContextRef),所以一般UIBezierPath在drawRect中使用。

    UIBezierPath的属性介绍:##

    1.CGPath:将UIBezierPath类转换成CGPath,类似于UIColor的CGColor
    2.empty:只读类型,路径上是否有有效的元素
    3.bounds:和view的bounds是不一样的,它获取path的X坐标、Y坐标、宽度,但是高度为0
    4.currentPoint:当前path的位置,可以理解为path的终点
    5.lineWidth:path宽度
    6.lineCapStyle:path端点样式,有3种样式
      kCGLineCapButt:无端点
      kCGLineCapRound:圆形端点
      kCGLineCapSquare:方形端点(样式上和kCGLineCapButt是一样的,但是比kCGLineCapButt长一点)
    效果图:

    Jietu20170630-144106@2x.jpg

    7.lineJoinStyle:拐角样式

    * kCGLineJoinMiter:尖角
    * kCGLineJoinRound:圆角
    * kCGLineJoinBevel:缺角 
    

    效果图:


    Jietu20170630-144204@2x.jpg

    8.miterLimit:最大斜接长度(只有在使用kCGLineJoinMiter是才有效), 边角的角度越小,斜接长度就会越大

    799670-20151013144524069-20078922.png
    为了避免斜接长度过长,使用lineLimit属性限制,如果斜接长度超过miterLimit,边角就会以KCALineJoinBevel类型来显示
    799670-20151013144535319-961693814.png
    9.flatness:弯曲路径的渲染精度,默认为0.6,越小精度越高,相应的更加消耗性能。
    10.usesEvenOddFillRule:单双数圈规则是否用于绘制路径,默认是NO。11.UIRectCorner: 角
    * UIRectCornerTopLeft:左上角
    * UIRectCornerTopRight:右上角
    * UIRectCornerBottomLeft:左下角
    * UIRectCornerBottomRight:右下角
    * UIRectCornerAllCorners:所有四个角

    UIBezierPath的方法介绍:##

    1.创建UIBezierPath对象:

        * +(instancetype)bezierPath:
    

    2.创建在rect内的矩形:

         + (instancetype)bezierPathWithRect:(CGRect)rect:    
         参数:rect->矩形的Frame
    

    3.创建在rect里的内切曲线:
    <pre>
    <code>
      + (instancetype)bezierPathWithOvalInRect:(CGRect)rect:
    </code>
    <code>
      参数:rect->矩形的Frame
    </code>
    </pre>
    4.创建带有圆角的矩形,当矩形变成正圆的时候,Radius就不再起作用:
    <pre>
    <code>

    • (instancetype)bezierPathWithRoundedRect:(CGRect)rect cornerRadius:(CGFloat)cornerRadius
      </code>
      <code>
        参数:rect->矩形的Frame
      </code>
      <code>
      cornerRadius->圆角大小   
      </code>
      </pre>
      5.设定特定的角为圆角的矩形:
      <pre>
      <code>
      • (instancetype)bezierPathWithRoundedRect:(CGRect)rect byRoundingCorners:(UIRectCorner)corners cornerRadii:(CGSize)cornerRadii
        </code>
        <code>
        参数:rect->矩形的Frame
        </code>
        <code>
        corners->指定的圆角
        </code>
        <code>
        cornerRadii->圆角的大小
        </code>
        </pre>
        6.创建圆弧
        +(instancetype)bezierPathWithArcCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise
        参数:center->圆
        radius->半径
        startAngle->起始位
        endAngle->结束为止
        clockwise->是否顺时针方向
          起始位置参考图:
        Jietu20170630-143551@2x.jpg
        7.通过已有路径创建路径:
        ![Uploading Jietu20170630-143713@2x_643409.jpg . . .
        + (instancetype)bezierPathWithCGPath:(CGPathRef)CGPa
        参数:CGPath->已有路径
        8.init方法:
        - (instancetype)init
        9.initWiteCoder方法:
        - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder
        10.转换成CGPath:
        - (CGPathRef)CGPath
        11.移动到某一点:
        - (void)moveToPoint:(CGPoint)point
        参数:point->目标位置
        12.绘制一条线:
        - (void)addLineToPoint:(CGPoint)point
        参数:point->目标位置
        13.创建三次贝塞尔曲线:
        - (void)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2
        参数:
        <pre>
    • endPoint->终点
    • controlPoint1->控制点1
    • controlPoint2->控制点2
      </pre>
        参照图:


      Jietu20170630-143713@2x.jpg

      14.创建二次贝塞尔曲线:
      -(void)addQuadCurveToPoint:(CGPoint)endPoint controlPoint:(CGPoint)controlPoint
        参数:
      * endPoint->终点
      * controlPoint->控制点
      参照图:


      Jietu20170630-143838@2x.jpg
      15.添加圆弧:
      -(void)addArcWithCenter:(CGPoint)center radius:(CGFloat)radius startAngle:(CGFloat)startAngle endAngle:(CGFloat)endAngle clockwise:(BOOL)clockwise|
      参数:
      参看创建圆弧

      16.闭合路径,即在终点和起点连一根线:
      - (void)closePath;
      17.清空路径:
      - (void)removeAllPoints;
      18.追加路径:
      - (void)appendPath:(UIBezierPath *)bezierPath
      参数:bezierPath->追加的路径
      19.扭转路径,即起点变成终点,终点变成起点:
      - (UIBezierPath *)bezierPathByReversingPath
      20.路径进行仿射变换:
      - (void)applyTransform:(CGAffineTransform)transform;
      参数:transform->仿射变换
      21.绘制虚线:
      - (void)setLineDash:(nullable const CGFloat *)pattern count:(NSInteger)count phase:(CGFloat)phase
      参数:pattern->C类型线性数据
           count->pattern中数据个数
           phase-> 起始位置
      22.填充:
      - (void)fill
      23.描边,路径创建需要描边才能显示出来:
      - (void)stroke;
      24.设置描边颜色,需要在设置后调用描边方法:
      [[UIColor blackColor] setStroke];
      25.设置填充颜色,需要在设置后调用填充方法
      [[UIColor redColor] setFill];
      26.设置描边的混合模式:
      - (void)fillWithBlendMode:(CGBlendMode)blendMode alpha:(CGFloat)alpha
      参数:blendMode->混合模式
      alpha->透明度
      27.设置填充的混合模式:
      - (void)strokeWithBlendMode:(CGBlendMode)blendMode alpha:(CGFloat)alpha;
      参数:blendMode->混合模式
      alpha->透明度
      28.修改当前图形上下文的绘图区域可见,随后的绘图操作导致呈现内容只有发生在指定路径的填充区域
      - (void)addClip;

    相关文章

      网友评论

          本文标题:贝塞尔曲线(UIBezierPath)属性、方法汇总?

          本文链接:https://www.haomeiwen.com/subject/dfftqxtx.html