我必须绘制一条从 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/