swift - 绘制部分圆

标签 swift uibezierpath

我正在编写一个程序,它将接受 0 到 1 之间的一个数字,然后吐出一个圆(我猜是圆弧),该圆由该数字完成。

例如输入0.5,程序会输出一个半圆

如果为 0.1,程序将输出一个很小的圆弧,最终占整个圆的 10%。

我可以通过将角度起点设为 0,将角度终点设为 2*M_PI*decimalInput

但是,我需要在圆的顶部设置起点,所以起点是 3*M_PI_2,终点是 7*M_PI_2

我只是无法用这些新的起点/终点绘制部分完整的圆。我承认,我的数学不是最好的,因此欢迎任何建议/意见

这是我目前的情况

var decimalInput = 0.75 //this number can be any number between 0 and 1
let start = CGFloat(3*M_PI_2)
let end = CGFloat(7*M_PI_2*decimalInput)

let circlePath = UIBezierPath(arcCenter: circleCenter, radius: circleRadius, startAngle: start, endAngle: end, clockwise: true)

circlePath.stroke()

尽管我尝试了很多,但我似乎还是做不好。我认为结束角度是罪魁祸首,除非我以错误的方式解决这个问题

最佳答案

弧长是2 * M_PI * decimalInput。您需要将弧长添加到起始角度,如下所示:

let circleCenter = CGPointMake(100, 100)
let circleRadius = CGFloat(80)
var decimalInput = 0.75
let start = CGFloat(3 * M_PI_2)
let end = start + CGFloat(2 * M_PI * decimalInput)
let circlePath = UIBezierPath(arcCenter: circleCenter, radius: circleRadius, startAngle: start, endAngle: end, clockwise: true)
XCPCaptureValue("path", circlePath)

结果:

arc

请注意,当用于在 UIView 中绘制时,路径将垂直翻转。

关于swift - 绘制部分圆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28490355/

相关文章:

java - 尽管采用 json 编码,但所需参数不存在

ios - 通过 subview 移动一个正方形

ios - 在 SQLite 中保存 UIBezierPath

ios - 如何在蒙版 UIView 周围绘制阴影?

ios - 根据随机 CGFloat 值重新绘制 UIBezierPath

ios - 如何将 tableView 放在节标题中

ios - 如何提取和计算具有价格属性的对象数组的价格

iOS - 如何在 "touchesMoved:"方法中用手指绘制平滑线

ios - ACAccountStore accountsWithAccountType 返回空列表但访问请求被授予

swift - 从异步完成处理程序获取数据