服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - IOS - IOS 贝塞尔曲线(UIBezierPath)属性、方法整理

IOS 贝塞尔曲线(UIBezierPath)属性、方法整理

2021-02-06 14:01iOS开发网 IOS

这篇文章主要介绍了IOS 贝塞尔曲线(UIBezierPath)属性、方法的相关资料,这里整理了贝塞尔 曲线的基础资料,对属性及相应的方法一一做了详解,需要的朋友可以参考下

ios 贝塞尔曲线详解

        开发ios的朋友都知道ios 贝塞尔曲线的重要性,由于经常会用到这样的东西,索性抽时间就把相应所有的属性,方法做一个总结。

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长一点)

    效果图:

    IOS 贝塞尔曲线(UIBezierPath)属性、方法整理

7.linejoinstyle:拐角样式

    kcglinejoinmiter:尖角

      kcglinejoinround:圆角

      kcglinejoinbevel:缺角

      效果图:

    IOS 贝塞尔曲线(UIBezierPath)属性、方法整理

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

 IOS 贝塞尔曲线(UIBezierPath)属性、方法整理

  为了避免斜接长度过长,使用linelimit属性限制,如果斜接长度超过miterlimit,边角就会以kcalinejoinbevel类型来显示

 IOS 贝塞尔曲线(UIBezierPath)属性、方法整理

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里的内切曲线:

  + (instancetype)bezierpathwithovalinrect:(cgrect)rect:

  参数:rect->矩形的frame

4.创建带有圆角的矩形,当矩形变成正圆的时候,radius就不再起作用:

  + (instancetype)bezierpathwithroundedrect:(cgrect)rect cornerradius:(cgfloat)cornerradius

  参数:rect->矩形的frame

       cornerradius->圆角大小      

5.设定特定的角为圆角的矩形:

  + (instancetype)bezierpathwithroundedrect:(cgrect)rect byroundingcorners:(uirectcorner)corners cornerradii:(cgsize)cornerradii

  参数:rect->矩形的frame

     corners->指定的圆角

     cornerradii->圆角的大小

6.创建圆弧+ (instancetype)bezierpathwitharccenter:(cgpoint)center radius:(cgfloat)radius startangle:(cgfloat)startangle endangle:(cgfloat)endangle clockwise:(bool)clockwise

  参数:center->圆点

     radius->半径

     startangle->起始位置

     endangle->结束为止

     clockwise->是否顺时针方向

  起始位置参考图:

      IOS 贝塞尔曲线(UIBezierPath)属性、方法整理

7.通过已有路径创建路径:

  b+ (instancetype)bezierpathwithcgpath:(cgpathref)cgpath

  参数: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

  参数:endpoint->终点

     controlpoint1->控制点1

     controlpoint2->控制点2

  参照图:

    IOS 贝塞尔曲线(UIBezierPath)属性、方法整理

 

14.创建二次贝塞尔曲线:

  - (void)addquadcurvetopoint:(cgpoint)endpoint controlpoint:(cgpoint)controlpoint

  参数:endpoint->终点

       controlpoint->控制点

  参照图:

     IOS 贝塞尔曲线(UIBezierPath)属性、方法整理

 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;

github地址:https://github.com/locking-xu/uibezierpath

 感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

延伸 · 阅读

精彩推荐
  • IOSiOS通过逆向理解Block的内存模型

    iOS通过逆向理解Block的内存模型

    自从对 iOS 的逆向初窥门径后,我也经常通过它来分析一些比较大的应用,参考一下这些应用中某些功能的实现。这个探索的过程乐趣多多,不仅能满足自...

    Swiftyper12832021-03-03
  • IOSIOS 屏幕适配方案实现缩放window的示例代码

    IOS 屏幕适配方案实现缩放window的示例代码

    这篇文章主要介绍了IOS 屏幕适配方案实现缩放window的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要...

    xiari5772021-06-01
  • IOSiOS中tableview 两级cell的展开与收回的示例代码

    iOS中tableview 两级cell的展开与收回的示例代码

    本篇文章主要介绍了iOS中tableview 两级cell的展开与收回的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    J_Kang3862021-04-22
  • IOSiOS 雷达效果实例详解

    iOS 雷达效果实例详解

    这篇文章主要介绍了iOS 雷达效果实例详解的相关资料,需要的朋友可以参考下...

    SimpleWorld11022021-01-28
  • IOS关于iOS自适应cell行高的那些事儿

    关于iOS自适应cell行高的那些事儿

    这篇文章主要给大家介绍了关于iOS自适应cell行高的那些事儿,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的...

    daisy6092021-05-17
  • IOSIOS开发之字典转字符串的实例详解

    IOS开发之字典转字符串的实例详解

    这篇文章主要介绍了IOS开发之字典转字符串的实例详解的相关资料,希望通过本文能帮助到大家,让大家掌握这样的方法,需要的朋友可以参考下...

    苦练内功5832021-04-01
  • IOSiOS布局渲染之UIView方法的调用时机详解

    iOS布局渲染之UIView方法的调用时机详解

    在你刚开始开发 iOS 应用时,最难避免或者是调试的就是和布局相关的问题,下面这篇文章主要给大家介绍了关于iOS布局渲染之UIView方法调用时机的相关资料...

    windtersharp7642021-05-04
  • IOS解析iOS开发中的FirstResponder第一响应对象

    解析iOS开发中的FirstResponder第一响应对象

    这篇文章主要介绍了解析iOS开发中的FirstResponder第一响应对象,包括View的FirstResponder的释放问题,需要的朋友可以参考下...

    一片枫叶4662020-12-25