0
的視圖的背景顏色,我想藍色基於在此情況下爲70的值來進行動畫。這意味着,顏色開始在視圖中從0px加載,並停止在任何值的數量。另外,我希望在加載顏色的同時將數字從0計數到最終值。是否有任何提示/鏈接或一些方向可以讓我指出,以實現這一目標?提前致謝! 夫特3:如何當用戶輸入其包含下面的圖像視圖控制器動畫類似於進度條
的視圖的背景顏色,我想藍色基於在此情況下爲70的值來進行動畫。這意味着,顏色開始在視圖中從0px加載,並停止在任何值的數量。另外,我希望在加載顏色的同時將數字從0計數到最終值。是否有任何提示/鏈接或一些方向可以讓我指出,以實現這一目標?提前致謝! 夫特3:如何當用戶輸入其包含下面的圖像視圖控制器動畫類似於進度條
創建progressView
具有所需backgroundColor
let progressView = UIView(frame: CGRect(x: 0, y: 0, width: 1, height: 50))
progressView.backgroundColor = .blue
self.view.addSubview(progressView)
調用下面的函數進行動畫其寬度正比於progress
func setProgress(_ progress: CGFloat) {
let fullWidth: CGFloat = 200
let newWidth = progress/100*fullWidth
UIView.animate(withDuration: 1.5) {
self.progressView.frame.size = CGSize(width: newWidth, height: self.progressView.frame.height)
}
}
創建progressLabel
和currentProgress
可變
let progressLabel = UILabel(frame: CGRect(x: 0, y: 100, width: 50, height: 50))
var currentProgress: CGFloat = 0
label.text = String(currentProgress)
self.view.addSubview(progressLabel)
調用下面的函數與延遲一個循環更新的進度,例如:setLabelProgress(initialValue: self.currentProgress, targetValue: 70)
func setLabelProgress(initialValue: CGFloat, targetValue: CGFloat) {
guard currentProgress != targetValue else { return }
let range = targetValue - initialValue
let increment = range/CGFloat(abs(range))
let duration: TimeInterval = 1.5
let delay = duration/TimeInterval(range)
currentProgress += increment
progressLabel.text = String(describing: currentProgress)
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + delay) {
self.setLabelProgress(initialValue: initialValue, targetValue: targetValue)
}
}
對於第二個標籤調用相同的功能,但交換initialValue
和targetValue