ios - 如何画一条给定长度和角度的直线?

标签 ios swift uibezierpath drawrect

我必须绘制一条从 0,0 开始的直线,具有一定的长度和角度(从 View 的顶部)。目前能够通过给出起点和终点来创建一条线,但我必须使用角度和长度而不是终点,有什么帮助吗?

代码如下:

let path = UIBezierPath()
path.move(to: CGPoint(x: 0, y: 0))
path.addLine(to: CGPoint(x: 0+10, y: 0+10))

let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
shapeLayer.strokeColor = UIColor.blue.cgColor
shapeLayer.lineWidth = 3.0

最佳答案

有很多方法可以做到这一点。一种方法是从沿 Y 轴的单位长度线开始。将线旋转到所需的角度并将其缩放到所需的长度。示例:

let angleInRadians: CGFloat = ...
let length: CGFloat = ...
let path = UIBezierPath()
path.move(to: .zero)
path.addLine(to: CGPoint(x: 0, y: 1))
path.apply(.init(rotationAngle: angleInRadians))
path.apply(.init(scaleX: length, y: length))

另一种方法是直接使用三角函数计算直线的非原点端点:

let angleInRadians: CGFloat = ...
let length: CGFloat = ...
let path = UIBezierPath()
path.move(to: .zero)
path.addLine(to: CGPoint(x: -sin(angleInRadians) * length, cos(angleInRadians) * length))

关于ios - 如何画一条给定长度和角度的直线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44581730/

相关文章:

ios - 是否可以在 Windows 10 上调试 iOS Chrome?

ios - NSUserDefaults 在 View 之间被删除

ios - Google 登录按钮什么都不做

ios - 如何对项目内不同组的多个图像进行动画处理?

ios - 如何为 UIBezierPath 使用自定义图像

ios - MKOverlayRenderer 不渲染

ios - 在 Web View 中点击应用程序 url 方案后如何返回应用程序

ios - 更新 UITableViewCell subview 对方向更改的约束

swift - 如何确保 CAShapeLayer 调整大小以适应 UIView

ios - 具有多个路径的UIBezierPath不连接具有斜角类型的线