UIProgressView setProgress 动画搞砸了
Posted
技术标签:
【中文标题】UIProgressView setProgress 动画搞砸了【英文标题】:UIProgressView setProgress animation is messed up 【发布时间】:2016-12-20 22:39:04 【问题描述】:由于某种原因,UIProgressView.setProgress(1, animate: true)
导致出现混乱的动画。下图显示了问题。首先,它从中心向外动画,并从略高于其实际位置的位置开始。
这是包含 UIProgressView 的完整视图控制器代码
import UIKit
class ViewController: UIViewController
@IBOutlet weak var progressBar: UIProgressView!
override func viewDidLoad()
super.viewDidLoad()
progressBar.setProgress(1, animated: true)
【问题讨论】:
我不明白怎么回事 如果等到视图完全加载怎么办?通过在viewDidAppear
中调用progressBar.setProgress(1, animated: true)
框架在viewDidLoad
中设置不正确;等到viewDidAppear
或viewDidLayoutSubviews
。如果您的进度视图具有固定宽度,您也可以解决此问题。
感谢 Randy 和 Paulw11,这确实是问题所在。它需要在 viewDidLoad 中而不是在 viewDidAppear 中调用
可以确认。与 viewDidAppear 或 viewDidLoad 均不相关
【参考方案1】:
问题是在 viewDidLoad 中调用了 setProgress,这搞砸了。它需要在视图完全加载后调用的另一个方法中调用,例如 Paulw11 和 Randy 建议的 viewDidAppear
【讨论】:
【参考方案2】:这里的问题是,您要在视图加载完成之前设置进度视图。
您可以使用layoutIfNeeded()
方法在设置进度之前强制“构建”进度视图。
override func viewDidLoad()
super.viewDidLoad()
progressBar.layoutIfNeeded()
progressBar.setProgress(1, animated: true)
【讨论】:
以上是关于UIProgressView setProgress 动画搞砸了的主要内容,如果未能解决你的问题,请参考以下文章