在 UIProgressView 上设置最大值 (swift 4)
Set max value on UIProgressView (swift 4)
我下面的代码没有限制,最终会不停地走到进度视图的末尾。
我希望进度视图以 1 秒为间隔在 10 秒内到达进度条的末尾。
import UIKit
class ViewController: UIViewController {
@IBOutlet var progessV : UIProgressView!
var progressValue : Float = 0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(update), userInfo: nil, repeats: true)
}
@objc func update(){
progressValue += 0.01
progessV.progress = progressValue
}
@IBAction func reset() {
progressValue = 0
}
}
你的时间间隔应该是1,scheduleTimer
的文档说:
The number of seconds between firings of the timer.
所以将时间间隔设置为1秒。您还需要更换:
progressValue += 0.01
与:
progressValue += 0.1
正如 rmaddy 所提到的,您还需要在适当的时间停止计时器,一种方法是使 timer
成为您的 class 的 属性,就像这样:
private var timer: Timer?
并按照您的方式对其进行初始化:
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(update), userInfo: nil, repeats: true)
并在 update
方法中添加合适的代码来停止计时器:
if progressValue == 1 {
timer?.invalidate()
}
您必须将计时器设置为 1 秒,并将其添加到一个变量中,以便在到达 10 秒时停止。
你的代码变成这样:
import UIKit
class ViewController: UIViewController {
@IBOutlet var progessV : UIProgressView!
var progressValue : Float = 0
var timer : Timer?
override func viewDidLoad() {
super.viewDidLoad()
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(update), userInfo: nil, repeats: true)
}
@objc func update(){
if (progressValue < 1)
{
progressValue += 0.1
progessV.progress = progressValue
}
else
{
timer?.invalidate()
timer = nil
}
}
@IBAction func reset() {
progressValue = 0
}
}
我下面的代码没有限制,最终会不停地走到进度视图的末尾。
我希望进度视图以 1 秒为间隔在 10 秒内到达进度条的末尾。
import UIKit
class ViewController: UIViewController {
@IBOutlet var progessV : UIProgressView!
var progressValue : Float = 0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
Timer.scheduledTimer(timeInterval: 0.01, target: self, selector: #selector(update), userInfo: nil, repeats: true)
}
@objc func update(){
progressValue += 0.01
progessV.progress = progressValue
}
@IBAction func reset() {
progressValue = 0
}
}
你的时间间隔应该是1,scheduleTimer
的文档说:
The number of seconds between firings of the timer.
所以将时间间隔设置为1秒。您还需要更换:
progressValue += 0.01
与:
progressValue += 0.1
正如 rmaddy 所提到的,您还需要在适当的时间停止计时器,一种方法是使 timer
成为您的 class 的 属性,就像这样:
private var timer: Timer?
并按照您的方式对其进行初始化:
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(update), userInfo: nil, repeats: true)
并在 update
方法中添加合适的代码来停止计时器:
if progressValue == 1 {
timer?.invalidate()
}
您必须将计时器设置为 1 秒,并将其添加到一个变量中,以便在到达 10 秒时停止。
你的代码变成这样:
import UIKit
class ViewController: UIViewController {
@IBOutlet var progessV : UIProgressView!
var progressValue : Float = 0
var timer : Timer?
override func viewDidLoad() {
super.viewDidLoad()
timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(update), userInfo: nil, repeats: true)
}
@objc func update(){
if (progressValue < 1)
{
progressValue += 0.1
progessV.progress = progressValue
}
else
{
timer?.invalidate()
timer = nil
}
}
@IBAction func reset() {
progressValue = 0
}
}