Ich habe einen Viewcontroller, der ein paar Dinge im Storyboard eingerichtet hat - speziell 3 Tasten.Knopf oben auf Maske
Ich animiere Sachen hinter den Buttons, die "durch" sie zeigen, und habe eine Maskenansicht erstellt, die die Animation verstecken sollte. Das funktioniert. Das Problem ist, dass ich nicht weiß, ob ich die Buttons über die Maskenansicht legen soll. Sie sind auch dadurch verborgen. Ich habe versucht, wie button.layer.zPosition = 1
, aber ohne Erfolg. Die rote Farbe dient der Sichtbarkeit.
let bottomMaskStart = contentText.frame.origin.y+contentText.frame.height
bottomtMaskView = UIView(frame: CGRect(x: 0, y: bottomMaskStart, width: rangeView.frame.origin.x, height: self.view.frame.height-bottomMaskStart))
bottomtMaskView.layer.backgroundColor = UIColor.red.cgColor
self.view.addSubview(bottomtMaskView)
self.playButton.layer.zPosition = 1
Würde eine helfende Hand schätzen.
Die Animation hinter als eine Linie, gezeichnet mit Core-Grafik gehen - alle 100 ms mit dem aktuellen apmlitude des mic genannt:
func rangeWaveForm(){
let viewHeight = self.rangeView.frame.height
let db = viewHeight - (CGFloat(self.calculateVoiceLevel())/maxDb)*viewHeight
let p = CGPoint(x:self.lastPoint.x+10, y: db)
self.drawLineFromPoint(start: self.lastPoint, toPoint: p, ofColor: UIColor.blue, inView: customView)
self.lastPoint = p
}
func drawLineFromPoint(start : CGPoint, toPoint end:CGPoint, ofColor lineColor: UIColor, inView view:UIView) {
let path = UIBezierPath()
path.move(to: start)
path.addLine(to: end)
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
shapeLayer.strokeColor = lineColor.cgColor
shapeLayer.lineWidth = 1.0
if(end.x > view.frame.width*0.95){
let newRect = CGRect(x: view.frame.origin.x-10, y: view.frame.origin.y, width: view.frame.width+10, height: view.frame.height)
view.frame = newRect
}
if(start != CGPoint.zero){
view.layer.addSublayer(shapeLayer)
}
}