UIPageViewController 的子视图没有动画子视图? Swift 4

subView of UIPageViewController not animating Subview? Swift 4

经过许多令人沮丧的时间和一个不满意的客户,我决定来这里。

这是我的 pageController 的第一个子视图中的 viewDidAppear class

 override func viewDidAppear(_ animated: Bool) {
       print("hello")
     self.view.layoutIfNeeded()
  self.averageWorkSessions.shapeLayer.strokeEnd = 0
    UIView.animate(withDuration: 0.5) {
        let average = CGFloat(self.averageWorkSessions.average / 10)
        self.averageWorkSessions.shapeLayer.strokeEnd = average
        if !(average > 0.0){
            self.averageWorkSessions.Title.text = "N/A"
        }
        self.view.layoutIfNeeded()
    }
}

考虑一下

averageWorkSessions 是带有自定义组件的自定义视图,但它仍然是 UIView

的子class

这是可能与此问题相关的页面控制器的一部分

  lazy var subViewControllers: [UIViewController] = {

    return [

    UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Stats1") as! StatisticsViewController ,
     UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Stats2") as! Statistics2ViewController ,
       UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "Stats3") as! Statistics3ViewController
    ]

}()

override func viewDidLoad() {
    super.viewDidLoad()
    self.delegate = self
    self.dataSource = self
    setViewControllers([subViewControllers[0]], direction: .forward , animated: true, completion: nil)
    self.view.layoutIfNeeded()
}

短版

为什么动画不正确? print "hello" 完全符合预期...为什么不是我的动画?

我认为问题在于您在 UIView.animate()

中设置了 self.averageWorkSessions.shapeLayer.strokeEnd

self.view.layoutIfNeeded()应该在UIView.animate()里面,但是设置常量不应该。