【问题标题】:Swift draw and RESIZE circle with CAShapeLayer() and UIBezierPath使用 CAShapeLayer() 和 UIBezierPath 快速绘制和调整圆
【发布时间】:2018-10-16 18:32:00
【问题描述】:

我想画一个带动画的圆,动画从 12 点开始,旋转 360 度。一切正常,但我无法调整圆圈的大小。

如果我使用 UIBezierPath - 我可以定义起点(“startAngle: -CGFloat.pi / 2”)。

let shapeLayer = CAShapeLayer()
let center = progressView.center
    let circularPath = UIBezierPath(arcCenter: center, radius: 100, startAngle: -CGFloat.pi / 2, endAngle: 2 * CGFloat.pi, clockwise: true)
    shapeLayer.path = circularPath.cgPath

如果我使用 UIBezierPath(ovalIn:...) 我可以调整大小.. 但我想同时使用两者,或者如何保持起始角度和大小?

shapeLayer.path = UIBezierPath(ovalIn: CGRect(x: 8, y: 78, width: 70, height: 70)).cgPath

【问题讨论】:

    标签: swift uibezierpath cashapelayer


    【解决方案1】:

    对于您的路径代码的第一个版本,半径参数决定了圆的大小。

    在第二个版本中,它将一个椭圆(可能是也可能不是圆形)绘制到一个矩形框中。

    两者都可以让你控制大小,只是使用不同的参数。

    如果您想改变使用init(arcCenter:radius:startAngle:endAngle:clockwise:) 绘制的圆弧的大小,请改变半径参数。

    画的圆
    let circularPath = UIBezierPath(arcCenter: center, 
      radius: 100,  
      startAngle: -CGFloat.pi / 2,  
      endAngle: 2 * CGFloat.pi,  
      clockwise: true)
    

    将是用

    绘制的圆的两倍大
    let circularPath = UIBezierPath(arcCenter: center, 
      radius: 50,  
      startAngle: -CGFloat.pi / 2,  
      endAngle: 2 * CGFloat.pi,  
      clockwise: true)
    

    (顺便说一句,如果起始角是-π/2,那么结束角不应该是3π/2,所以弧是360°(或2π)而不是450°?)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-04-02
      • 1970-01-01
      • 1970-01-01
      • 2017-09-12
      • 2014-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多