CAShapeLayer strokeEnd вернулся в исходное состояние после нажатия viewcontroller и pop viewcontroller, чтобы он оставался в качестве значения изменения - PullRequest
0 голосов
/ 06 апреля 2019

Я создал круговое представление о прогрессе, используя CAShapeLayer, имея значение strokeEnd равным 0,3, и модифицировав strokeEnd, используя CABasicAnimation.После окончания анимации обводка становится равной 1, что является полным кругом, и это нормально, но если я нажимаю viewcontroller или pop viewcontroller, он возвращается в исходное состояние круга.Как мне оставить обводку, оставшуюся как 1, когда представление всплывающее или толчок?

https://giphy.com/gifs/JoyiYVXdiGO1drm1zJ

func animation() {

        let basicanimation = CABasicAnimation(keyPath: "transform.rotation")
        basicanimation.toValue = 2*CGFloat.pi

        basicanimation.fromValue = 0
        basicanimation.duration = 1
        basicanimation.repeatCount = Float.infinity
        basicanimation.fillMode = CAMediaTimingFillMode.forwards
        basicanimation.isRemovedOnCompletion = false
        //basicanimation.isAdditive = true
        tracklayer2.add(basicanimation, forKey: "basic")
 }

func startanimation() {

            if connected {

                self.cir.startstoplabel.text = "Start"
                self.connected = false
                self.cir.tracklayer2.isHidden = true
                self.cir.tracklayer.isHidden = false
                self.cir.tracklayer3.isHidden = true

            }
        else   {
        tapgesture.isEnabled = false
        cir.startstoplabel.text = "Connecting..."
        cir.tracklayer2.strokeEnd = 0.3
        cir.tracklayer3.isHidden = true

                self.cir.shapeLayer.isHidden = true
                self.cir.tracklayer2.isHidden = false
                self.cir.tracklayer.isHidden = true
                self.cir.animation()
            let url = URL(string: "")
        var request = URLRequest(url: url!)
        let auth = Auth.auth().currentUser?.uid
        request.addValue(auth!, forHTTPHeaderField: "")
        request.addValue("application/json",forHTTPHeaderField: "Content-Type")
        request.httpMethod = "POST"
        let parameter:[String:Int] = ["":1]
        let jsondata = try? JSONSerialization.data(withJSONObject: parameter)
        request.httpBody = jsondata
        let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
            if let error = error{
                print(error)
                return
            }
            let json = try? JSONSerialization.jsonObject(with: data!, options: []) as! [String:Any]
            print(json)
            self.connected = true


            DispatchQueue.main.async {

                self.cir.startstoplabel.font = UIFont(name: "HelveticaNeue", size: 28)
                self.cir.tracklayer3.removeAllAnimations()
                self.cir.tracklayer2.strokeEnd = 1
                    self.cir.tracklayer2.isHidden = true
                    self.cir.tracklayer3.isHidden = false
                    self.cir.shapeLayer.isHidden = false


                self.tapgesture.isEnabled = true

            }



        }
        task.resume()
        }
    }
...