将CGFloat数组规范化为UIView帧高度

时间:2018-04-26 13:12:20

标签: swift swift4

我正在UIBezierPath中绘制一系列CGFloat值。现在我想规范化值,以便数组的最大值占据整个高度。

到目前为止

let scaleFactor = (waveView.frame.height) * readFile.maxValue

for point in readFile.points {        
    let nextPoint = CGPoint(x: soundPath.currentPoint.x + sampleSpace, y: middleY - (point * scaleFactor) - 1.0)

    soundPath.addLine(to: nextPoint)
    soundPath.move(to: nextPoint)        
}

但它似乎不起作用......

EDIT ReadFile的:

class ReadFile {
public enum ReadFileError:Error{
    case errorReading(String)

}

/* Player Interval Measured in Miliseconds (By now..) */
var beginPosition:Int32 = 0
var endPosition:Int32 = 0

/* Sample Rate -> Default 48KHz */
var sampleRate:Double = 48000

var samplesSeconds:CGFloat = 5

var maxValue:CGFloat = 0
var points:[CGFloat] = []

}

sampleSpace = 0.2

1 个答案:

答案 0 :(得分:0)

谢谢安迪的回答,但我终于明白了。

我正在画一个声波,所以它有正面和负面的值。

heightMax = waveView.frame.height / 2

应用三规则(西班牙语翻译)我最终得到了这个:

    func drawSoundWave(windowLength:Int32){

    // Drawing code
    print("\(logClassName): Drawing!!!")
    print("\(logClassName): points COUNT = \(readFile.points.count)")

    let soundPath = UIBezierPath()
    soundPath.lineWidth = lineWidth
    soundPath.move(to: CGPoint(x:0.0 , y: middleY))

    print("\(logClassName) max ")
    for point in readFile.points{

        let normalizedHeight:CGFloat = (waveView.frame.height * point) / (2 * readFile.maxValue)
        let nextPoint = CGPoint(x: soundPath.currentPoint.x + sampleSpace, y: middleY - (normalizedHeight))

        soundPath.addLine(to: nextPoint)
        soundPath.move(to: nextPoint)

    }

    let trackLayer = CAShapeLayer()
    trackLayer.path = soundPath.cgPath

    waveView.layer.addSublayer(trackLayer)

    trackLayer.strokeColor = UIColor.red.cgColor
    trackLayer.lineWidth = lineWidth
    trackLayer.fillColor = UIColor.green.cgColor
    trackLayer.lineCap = kCALineCapRound

}

其中

let normalizedHeight:CGFloat = (waveView.frame.height * point) / (2 * readFile.maxValue) 

是给定readFile.maxValue和waveView.frame.height的标准化值