zoukankan      html  css  js  c++  java
  • UIBezierPath 简单使用

    ##题外蛋
    在开始讨论UIBezierPath之前,我小小的扯一个一个题外蛋,前不久刚刚决定好好做我自己的博客事业,斗志满满的去理解归纳一些概念,如前一段时间写的@property。不过最近在看了`《Objective-C 高级编程》`后,发现自己的归纳真是停留在最浅显的一面上,为什么@property能达到相应的效果这些东西都没有明白理解。 
    
    当时就如同头上被破了一盆冷水,果然基础的东西,理解归纳起来越是不简单,不过这样也让自己明白了自己的斤两,这也是一种利处。明白了自己的知识水平后,我决定还是踏实点,不要想着一步登天,还是踏踏实实的记录自己能力范围内的知识,慢慢的提高自己。
    
    放缓浮躁的心,慢慢去进步吧。
    
    ##UIBezierPath
    现在进入正题。   
    UIBezierPath这个类呢主要用于绘图。  
    之前的项目中需要绘图的部分都是用`Core Graphics`来绘制,OC是我的第一门语言,所以对于`Core Graphics`的C语言`API`不太适应,最近发现原来苹果的`UIKit`中已经对`Core Graphics`做了一些简单的封装,`UIBezierPath`就是其中一个。`UIBezierPath`已经完全满足了我对绘图的一些基本要求。
    
    UIBezierPath的好处显而易见。  
    * 首先它是`OC`语言的,相对于c语言的Core Graphics来说更为平易近人。
    * 其次它能够使用`ARC`,如果我们直接使用CGPathRef的话,还要自己负责在合适的时候释放。
    
    
    
    现在我就根据自己的使用来做一下简单记录。
    
    ##使用
    UIBezierPath的使用相当简单,分为三步:  
    * 创建path
    * 添加路径到path
    * 将path绘制出来
    
    例如我们来画条线:
    ```objc
        // 创建path
        UIBezierPath *path = [UIBezierPath bezierPath];
        
        // 添加路径[1条点(100,100)到点(200,100)的线段]到path
        [path moveToPoint:CGPointMake(100 , 100)];
        [path addLineToPoint:CGPointMake(200, 100)];
        
        // 将path绘制出来
        [path stroke];
    ```

    同样的我们也可以画一个圆
    ```objc
        UIBezierPath *path = [UIBezierPath bezierPath];
        [path addArcWithCenter:self.center radius:100.0 startAngle:0.0 endAngle:180.0 clockwise:YES];
        [path stroke];
    ```
    


    除了画线、画圆之外,我们还可以画其他各种图形。 具体的方法你都可以在UIBezierPath的头文件里面找到,而使用过程和Core Graphics基本一致。 其中有一个地方是需要我们注意的。就是颜色的设置。 UIBezierPath颜色的设置并没有包含在自己类中,而是通过UIColor直接设置的。 例: ```objc // 设置描边色 [[UIColor blueColor] setStroke]; // 设置填充色 [[UIColor redColor] setFill]; ``` 看上去是UIColor的方法,其实也是对于CGContextRef的渲染,最终还是作用到CGConextRef上的 而UIBezierPath其实也就是对CGPathRef的封装 所以UIBezierPath通过UIColor的方法来设置颜色也就不奇怪了。 因为UIColor和UIBezierPath最终还是通过Core Graphics的方法来绘图的,只不过苹果又封装了一层OC。 最后结合上面那个画圆的例子,把颜色添加进去,再来看下效果。 ``` //创建path UIBezierPath *path = [UIBezierPath bezierPath]; // 添加圆到path [path addArcWithCenter:self.center radius:100.0 startAngle:0.0 endAngle:M_PI*2 clockwise:YES]; // 设置描边宽度(为了让描边看上去更清楚) [path setLineWidth:5.0]; //设置颜色(颜色设置也可以放在最上面,只要在绘制前都可以) [[UIColor blueColor] setStroke]; [[UIColor redColor] setFill]; // 描边和填充 [path stroke]; [path fill]; ```


    UIBezierPath绘图是不是相当的简单。当然简单的使用也可以有很炫的效果,具体你可以自行查阅文档,里面可以有很多变化哦。
  • 相关阅读:
    WPF自定义路由事件
    一文看懂微服务背后的技术演进与应用实践
    云原生消息、事件、流超融合平台——RocketMQ 5.0 初探
    KubeVela 1.1 发布,开启混合环境应用交付新里程碑
    Facebook宕机背后,我们该如何及时发现DNS问题
    Apache Flink 在汽车之家的应用与实践
    新一代容器平台ACK Anywhere,来了
    Serverless 工程实践 | Serverless 应用优化与调试秘诀
    OpenKruise 如何实现应用的可用性防护?
    国家网络安全宣传周:勒索病毒利如刀,上网备好技能包
  • 原文地址:https://www.cnblogs.com/peterpan507/p/3533422.html
Copyright © 2011-2022 走看看