EverStar's Blog

技术交流

Objective-C用UIBezierPath画图

UIBezierPath是Core Graphics框架关于路径的封装。我们通过设置路径即可画出我们想要的一些简单图形。如一个简单的需求:IM消息的展示框的一个“尖”:
这里写图片描述
还有下面这个:
这里写图片描述
这样一个不规则的图形我们只需要在规则的矩形View右边紧挨着画一个小三角即可。下面的代码使用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];
}

我们同样可以多设置一些点来绘制其他的图形,可以使用+ bezierPathWithOvalInRect:方法来画圆,当我们传的rect参数是一个正方形时,画出来的就是圆(矩形则是椭圆):

  UIBezierPath *path = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(20, 20, self.frame.size.width - 40, self.frame.size.width - 40)];

使用UIBezierPath画的图需要放到view的drawRect方法中才能显示 ,如果想要在其他方法中显示需要借助CAShapeLayer类。把UIBezierPath类的path属性赋值给CAShapeLayer的path,然后将CAShapeLayer对象添加到对应View的layer上面即可。
这里有一篇博客介绍UIBezierPath的使用,很详细:http://www.huangyibiao.com/archives/190

阅读更多
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/liu1347508335/article/details/52385259
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭