UIBezierPath

贝赛尔曲线是CoreGraphic的再次封装,简化了画图的步骤。它让你可以设定一个可以包含直线和曲线的路劲并且可以在你自定义的view里面渲染它。你使用这个类来为你的路劲初始化一些几何体。这路劲可以定义简单地形状,譬如矩形,椭圆,弧形,或者可以定义包含一些直线和复杂曲线分段组成的的混合的多边形,你也可以进一步使用这个类来渲染这个路劲在当前画布下。

CAShapeLayer类在它的坐标系里画一个立体的贝塞尔曲线。这个模型是混合在这个layer的内容和它的第一个子图层里。

#define degreesToRadians(x) (M_PI*(x)/180.0) //把角度转换成PI的方式
#define  PROGREESS_WIDTH 80 //圆直径
#define PROGRESS_LINE_WIDTH 4 //弧线的宽度
- (void)shapLayer{
    //使用贝赛尔曲线初始化一个path 是个圆形,参数分别是圆心、半径、开始的弧度、结束弧度、是否顺时针
    UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(200,100) radius:30. startAngle:degreesToRadians(-330) endAngle:degreesToRadians(30) clockwise:YES];
    CAShapeLayer *shapLayer = [CAShapeLayer layer];
    shapLayer.path = path.CGPath;
    //透明度
    shapLayer.opacity = 0.8;
    //指定线的边缘是圆形
    shapLayer.lineCap = kCALineCapRound;
    //画线的填充颜色
    shapLayer.strokeColor = [UIColor greenColor].CGColor;
    //圆圈内的填充颜色
    shapLayer.fillColor = [UIColor redColor].CGColor;
    //画笔开始百分比
    shapLayer.strokeStart = 0.1;
    //画笔结束百分比
    shapLayer.strokeEnd = 0.99;
    //时间    //速度
    shapLayer.speed = 0.1;
    //线宽度
    shapLayer.lineWidth = 4;
    [self.view.layer addSublayer:shapLayer];
    
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您介绍如何使用UIBezierPath画聊天气泡。 首先,我们需要创建一个UIView作为聊天气泡的容器,并设置它的背景色和圆角。 然后,我们可以创建一个UIBezierPath对象,使用move(to:)方法将笔触移动到气泡的左下角,然后使用addLine(to:)方法画出气泡的左侧、顶部和右侧的线条。接着,我们可以使用addArc(withCenter:radius:startAngle:endAngle:clockwise:)方法在气泡的右下角添加一个圆角。 最后,我们可以使用CAShapeLayer将UIBezierPath对象渲染到UIView上,实现聊天气泡的绘制。 以下是示例代码: ```swift let bubbleView = UIView() bubbleView.backgroundColor = UIColor(red: 0.93, green: 0.93, blue: 0.93, alpha: 1) bubbleView.layer.cornerRadius = 10 bubbleView.clipsToBounds = true let bubblePath = UIBezierPath() bubblePath.move(to: CGPoint(x: 10, y: bubbleView.bounds.height - 10)) bubblePath.addLine(to: CGPoint(x: 10, y: 10)) bubblePath.addLine(to: CGPoint(x: bubbleView.bounds.width - 30, y: 10)) bubblePath.addLine(to: CGPoint(x: bubbleView.bounds.width - 20, y: 0)) bubblePath.addLine(to: CGPoint(x: bubbleView.bounds.width - 10, y: 10)) bubblePath.addLine(to: CGPoint(x: bubbleView.bounds.width - 10, y: bubbleView.bounds.height - 10)) bubblePath.addArc(withCenter: CGPoint(x: bubbleView.bounds.width - 20, y: bubbleView.bounds.height - 10), radius: 10, startAngle: 0, endAngle: CGFloat.pi / 2, clockwise: true) bubblePath.addArc(withCenter: CGPoint(x: bubbleView.bounds.width - 20, y: bubbleView.bounds.height - 20), radius: 10, startAngle: CGFloat.pi / 2, endAngle: CGFloat.pi, clockwise: true) bubblePath.addArc(withCenter: CGPoint(x: bubbleView.bounds.width - 30, y: bubbleView.bounds.height - 10), radius: 10, startAngle: CGFloat.pi, endAngle: CGFloat.pi * 3 / 2, clockwise: true) bubblePath.close() let shapeLayer = CAShapeLayer() shapeLayer.path = bubblePath.cgPath bubbleView.layer.mask = shapeLayer ``` 以上代码将创建一个灰色的聊天气泡,带有圆角和三角形尾巴。您可以根据需要调整气泡的颜色、形状和大小。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值