Ios 用Swift绘制正弦曲线
在我的Swift项目中,我应该使用平移手势检测用户的移动,并绘制如下正弦曲线。有没有什么图书馆可以画这个或者我可以用什么方法来实现它 这个正弦曲线也应该有控制点,在这里我可以动态地重塑它Ios 用Swift绘制正弦曲线,ios,swift,xcode,uibezierpath,uipangesturerecognizer,Ios,Swift,Xcode,Uibezierpath,Uipangesturerecognizer,在我的Swift项目中,我应该使用平移手势检测用户的移动,并绘制如下正弦曲线。有没有什么图书馆可以画这个或者我可以用什么方法来实现它 这个正弦曲线也应该有控制点,在这里我可以动态地重塑它 您可以使用点、直线或曲线段绘制任何数学函数。正弦曲线特别容易,因为您可以非常容易地确定极值和其他感兴趣的点,以构造此类曲线的近似值 一种非常直接的绘制方法是这样的: class SinusoidalCurveView: UIView { var resolution: CGFloat? = n
您可以使用点、直线或曲线段绘制任何数学函数。正弦曲线特别容易,因为您可以非常容易地确定极值和其他感兴趣的点,以构造此类曲线的近似值 一种非常直接的绘制方法是这样的:
class SinusoidalCurveView: UIView {
var resolution: CGFloat? = nil { didSet { setNeedsDisplay() } }
var function: (n: CGFloat, verticalScale: CGFloat, horizontalScale: CGFloat) = (100.0, 30.0, 30.0) { didSet { setNeedsDisplay() } }
private func solveY(_ x: CGFloat) -> CGFloat {
let n = function.n
let h = function.verticalScale
let m = function.horizontalScale
return h*sin(x/m) + n
}
override func draw(_ rect: CGRect) {
super.draw(rect)
let resolutionStep: CGFloat = {
if let resolution = resolution {
return rect.width/resolution
} else {
return 1.0/self.layer.contentsScale
}
}()
var x: CGFloat = 0.0
let path = UIBezierPath()
path.move(to: CGPoint(x: x, y: solveY(x)))
while x < rect.width {
x += resolutionStep
path.addLine(to: CGPoint(x: x, y: solveY(x)))
}
path.stroke()
}
}
没有添加控制点,因此pan上不会发生任何事情。但是,在视图中添加了平移手势识别器之后,添加此代码将使事情正常进行
private func getClosestPointOfInterest(to point: CGPoint) -> PointOfInterest? {
// Do the math here
return .extreme(at: .zero)
}
从现在开始,事情应该很简单。这是一点工作,但不应该太激烈。请参阅本文。
private func getClosestPointOfInterest(to point: CGPoint) -> PointOfInterest? {
// Do the math here
return .extreme(at: .zero)
}