码迷,mamicode.com
首页 > 移动开发 > 详细

iOS 简单的使用UIBezierPath绘制

时间:2015-03-20 13:03:02      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:

UIBezierPath这个类呢主要用于绘图。 
之前的项目中需要绘图的部分都是用Core Graphics来绘制,OC是我的第一门语言,所以对于Core Graphics的C语言API不太适应,最近发现原来苹果的UIKit中已经对Core Graphics做了一些简单的封装,UIBezierPath就是其中一个。UIBezierPath已经完全满足了我对绘图的一些基本要求。

UIBezierPath的好处显而易见。 
* 首先它是OC语言的,相对于c语言的Core Graphics来说更为平易近人。 * 其次它能够使用ARC,如果我们直接使用CGPathRef的话,还要自己负责在合适的时候释放。

现在我就根据自己的使用来做一下简单记录。

使用

UIBezierPath的使用相当简单,分为三步: 
* 创建path * 添加路径到path * 将path绘制出来

例如我们来画条线:

// 创建path
    UIBezierPath *path = [UIBezierPath bezierPath];
    // 添加路径[1条点(100,100)到点(200,100)的线段]到path
    [path moveToPoint:CGPointMake(100 , 100)];
    [path addLineToPoint:CGPointMake(200, 100)];
    // 将path绘制出来
    [path stroke];

技术分享

同样的我们也可以画一个圆

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直接设置的。 
例:

// 设置描边色
    [[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绘图是不是相当的简单。当然简单的使用也可以有很炫的效果,具体你可以自行查阅文档,里面可以有很多变化哦。

iOS 简单的使用UIBezierPath绘制

标签:

原文地址:http://my.oschina.net/lanrenbar/blog/389379

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!