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()
里面,但是设置常量不应该。
经过许多令人沮丧的时间和一个不满意的客户,我决定来这里。
这是我的 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()
里面,但是设置常量不应该。