You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS:逆时针UIBezierPath从垂直向下起始的角度计算与按百分比描边

解决iOS中从负Y轴起始的逆时针UIBezierPath圆弧问题

首先得明确一个核心前提:iOS里的UIBezierPath圆弧角度坐标系和常规数学坐标系不一样——正X轴为0弧度,顺时针旋转时角度数值增大,这是很多人搞混方向的关键!

核心参数梳理

要实现你要的效果(逆时针、从负Y轴起始),我们需要明确这几个点:

  • 负Y轴对应的弧度是 3 * CGFloat.pi / 2(或者等价的 -CGFloat.pi / 2,两者在圆弧绘制中是同一个位置)
  • 绘制方向参数 clockwise 要传 false(代表逆时针绘制)
  • 结束角度的计算逻辑:因为iOS坐标系中逆时针是角度数值减小的方向,所以如果要从负Y轴逆时针旋转θ弧度,结束角度 = 起始角度 - θ

具体代码示例

1. 绘制完整的逆时针圆弧(从负Y轴出发绕一圈回到原点)

let center = CGPoint(x: 150, y: 150) // 圆弧中心
let radius: CGFloat = 80 // 半径
let startAngle = 3 * CGFloat.pi / 2 // 起始点:负Y轴
let endAngle = startAngle - 2 * CGFloat.pi // 结束点:绕逆时针一圈后回到负Y轴(等价于 -CGFloat.pi/2)
let fullCirclePath = UIBezierPath(arcCenter: center,
                                  radius: radius,
                                  startAngle: startAngle,
                                  endAngle: endAngle,
                                  clockwise: false)

2. 绘制从负Y轴逆时针转90°到负X轴的圆弧

let startAngle = 3 * CGFloat.pi / 2
let endAngle = CGFloat.pi // 负X轴对应的弧度
let quarterPath = UIBezierPath(arcCenter: center,
                               radius: radius,
                               startAngle: startAngle,
                               endAngle: endAngle,
                               clockwise: false)

3. 绘制从负Y轴逆时针转180°到正Y轴的圆弧

let startAngle = 3 * CGFloat.pi / 2
let endAngle = CGFloat.pi / 2 // 正Y轴对应的弧度
let halfPath = UIBezierPath(arcCenter: center,
                            radius: radius,
                            startAngle: startAngle,
                            endAngle: endAngle,
                            clockwise: false)

关键逻辑总结

  • 永远记住iOS的角度基准:正X=0,顺时针角度变大,负Y固定对应 3π/2 弧度
  • 逆时针绘制时,clockwise 设为 false,结束角度要小于起始角度(如果旋转角度小于2π),或者用起始角度减去2π来绘制完整圆
  • 如果你觉得用负数角度更直观,也可以直接把起始角度设为 -CGFloat.pi/2,计算逻辑是一样的,比如完整圆可以写成:
let startAngle = -CGFloat.pi / 2
let endAngle = startAngle - 2 * CGFloat.pi

内容的提问来源于stack exchange,提问作者Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 09:30:05