2017-06-16 99 views
1

我必須繪製一條從0,0開始的直線,並且具有一定的長度和角度(從視圖頂部開始)。目前能夠通過給出起點和終點而不是終點來創建一條線,我必須使用角度和長度,有什麼幫助?如何繪製給定長度和角度的直線?

下面是代碼:

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 

回答

2

有很多方法可以做到這一點。一種方法是從沿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)) 
相關問題