无法在 iOS 中设置进度条进度两次?
Unable to set progress bar progress twice in iOS?
我有 UIProgressView
。在开始编辑 UITextField
的文本时,我将进度条的值设置为 1 。在那之前,最初我让它进步到 0.1 。但它只设定了一次进步。如果我首先将进度设置为 0.1,然后它不会将进度设置为 1.please 告诉我问题是什么?
func textFieldDidBeginEditing(_ textField: UITextField) {
setViewBottomColor()
var view:BottomView?
if textField == textFieldEmail {
view = self.bottomViewFirst
view?.trackTintColor = Constant.AppColor.viewBottom
view?.progressTintColor = Constant.AppColor.purpleViewColor
}
else if textField == textFieldPassword {
view = self.bottomViewSecond
view?.trackTintColor = Constant.AppColor.viewBottom
view?.progressTintColor = Constant.AppColor.purpleViewColor
}
if view != nil {
view?.setProgress(1, animated: true)
UIView.animate(withDuration: 1.0, animations: {
view?.layoutIfNeeded()
}, completion: { (finish) in
})
}
}
func setViewBottomColor() {
self.bottomViewFirst.trackTintColor = Constant.AppColor.viewBottom
self.bottomViewFirst.progressTintColor = Constant.AppColor.purpleViewColor
self.bottomViewFirst?.setProgress(0.1, animated: false)
self.bottomViewFirst?.layoutIfNeeded()
}
检查下面我用来检查的代码片段。它工作正常。
您可以检查以下几点:
- 所有 IBOutlets 连接都必须存在。
- 如果您使用自定义 UIProgressView 作为 BottomView,那么您还必须更改 xib/storyboard 中的进度视图 class。
如果仅更改进度值,则不需要查看动画。
func textFieldDidBeginEditing(_ textField: UITextField) {
resetProgresses()
var view = UIProgressView()
if textField == t1 {
view = self.progressBar
view.trackTintColor = .red
view.progressTintColor = .green
}
else if textField == t2 {
view = self.progressBar2
view.trackTintColor = .green //Constant.AppColor.viewBottom
view.progressTintColor = .red//Constant.AppColor.purpleViewColor
}
if view != nil {
view.setProgress(1, animated: true)
}
}
func resetProgresses() {
self.progressBar?.setProgress(0.1, animated: true)
self.progressBar2?.setProgress(0.1, animated: true)
}
我有 UIProgressView
。在开始编辑 UITextField
的文本时,我将进度条的值设置为 1 。在那之前,最初我让它进步到 0.1 。但它只设定了一次进步。如果我首先将进度设置为 0.1,然后它不会将进度设置为 1.please 告诉我问题是什么?
func textFieldDidBeginEditing(_ textField: UITextField) {
setViewBottomColor()
var view:BottomView?
if textField == textFieldEmail {
view = self.bottomViewFirst
view?.trackTintColor = Constant.AppColor.viewBottom
view?.progressTintColor = Constant.AppColor.purpleViewColor
}
else if textField == textFieldPassword {
view = self.bottomViewSecond
view?.trackTintColor = Constant.AppColor.viewBottom
view?.progressTintColor = Constant.AppColor.purpleViewColor
}
if view != nil {
view?.setProgress(1, animated: true)
UIView.animate(withDuration: 1.0, animations: {
view?.layoutIfNeeded()
}, completion: { (finish) in
})
}
}
func setViewBottomColor() {
self.bottomViewFirst.trackTintColor = Constant.AppColor.viewBottom
self.bottomViewFirst.progressTintColor = Constant.AppColor.purpleViewColor
self.bottomViewFirst?.setProgress(0.1, animated: false)
self.bottomViewFirst?.layoutIfNeeded()
}
检查下面我用来检查的代码片段。它工作正常。
您可以检查以下几点:
- 所有 IBOutlets 连接都必须存在。
- 如果您使用自定义 UIProgressView 作为 BottomView,那么您还必须更改 xib/storyboard 中的进度视图 class。
如果仅更改进度值,则不需要查看动画。
func textFieldDidBeginEditing(_ textField: UITextField) { resetProgresses() var view = UIProgressView() if textField == t1 { view = self.progressBar view.trackTintColor = .red view.progressTintColor = .green } else if textField == t2 { view = self.progressBar2 view.trackTintColor = .green //Constant.AppColor.viewBottom view.progressTintColor = .red//Constant.AppColor.purpleViewColor } if view != nil { view.setProgress(1, animated: true) } } func resetProgresses() { self.progressBar?.setProgress(0.1, animated: true) self.progressBar2?.setProgress(0.1, animated: true) }