首页 > 解决方案 > 如何在 didload 上修复圆圈上的 UIimageview

问题描述

我想显示这个进度条,但是当在位于顶部的simulatore first time night icon 上加载时,在我更改选项卡后它就可以了并修复了圆形路径,出了什么问题?

 override func viewWillAppear(_ animated: Bool) {

        SetIconOnProgress()
        super.viewWillAppear(true)

    }

    func SetIconOnProgress() {

        let timeDay = currentSecondPassInDay > (secondsInDay / 2) ? 0 : timeLeft
        let timeNight = currentSecondPassInDay < (secondsInDay / 2) ? 0 : timeLeft
        let animationDay = CAKeyframeAnimation(keyPath: #keyPath(CALayer.position))

        animationDay.duration = CFTimeInterval(timeDay)
        let animationNight = CAKeyframeAnimation(keyPath: #keyPath(CALayer.position))
        animationNight.duration = CFTimeInterval(timeNight)

        animationNight.path = UIBezierPath(arcCenter: CGPoint(x: view.frame.midX , y: view.frame.midY - 200), radius:
            100, startAngle: CGFloat( (M_PI*Double(timeNight)) / Double(secondsInDay / 2)) , endAngle:  CGFloat(M_PI)  , clockwise: true).cgPath

        animationDay.path =  UIBezierPath(arcCenter: CGPoint(x: view.frame.midX , y: view.frame.midY - 200), radius:
            100, startAngle:  CGFloat( M_PI  + (M_PI*Double(timeDay)) / Double(secondsInDay / 2))  , endAngle:  CGFloat(M_PI*0) , clockwise: true).cgPath


        if currentSecondPassInDay > (secondsInDay / 2 ){
        animationDay.speed = 0.0
        animationNight.speed = 1.0

        }


        if currentSecondPassInDay < (secondsInDay / 2) {
            animationDay.speed = 1.0
            animationNight.speed = 0.0

        }

        let dayIcon = UIImageView(image: UIImage(named: "day"))

        dayIcon.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
        view.addSubview(dayIcon)
        dayIcon.layer.add(animationDay, forKey: nil)


        let nightIcon = UIImageView(image: UIImage(named: "night"))
        nightIcon.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
        view.addSubview(nightIcon)
        nightIcon.layer.add(animationNight, forKey: nil)

    }

它应该在加载视图控制器时固定在圆形路径上,并且当我更改选项卡时不要更改它的路径。

标签: swiftcore-animation

解决方案


推荐阅读