0

Я играю с ProgressView. То, что я хочу достичь, останавливается на 33%, 66%, 100% контрольных точках при нажатии кнопки. Он работает нормально, если я использую progressView.progress = 0.33, но он напрямую приземляется на контрольно-пропускной пункт. Вместо этого, если бы он был гладким и ускоряющимся, он выглядел бы так красиво.Smooth and Accelerating ProgressView

Я думал, что animateWithDuration будет работать, но, к сожалению, это не так. После некоторого чтения я узнал, что могу что-то сделать с NSTimer, но я не мог этого добиться.

var progressView: UIProgressView? 

override func viewDidLoad() 
{ 
    super.viewDidLoad() 

    progressView = UIProgressView(progressViewStyle: UIProgressViewStyle.Default) 
    progressView?.center = self.view.center 

    progressView?.trackTintColor = UIColor.redColor() 
    progressView?.progressTintColor = UIColor.greenColor() 

    view.addSubview(progressView!) 

    progressView!.progress = 0.0 
} 

Using this answer, я добился, что делает его двигаться один раз в каждый второй, но как я могу сделать его гладким, медленно в начале и ускорения, так выглядит красиво.

ответ

1

с использованием метода setProgress и установки анимации в true делает работу анимации.

import UIKit 

class ViewController: UIViewController { 

@IBOutlet weak var pb: UIProgressView! 
@IBOutlet weak var btn: UIButton! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    pb.progress = 0.00 
} 
@IBAction func btnPress(sender: UIButton) { 

    UIView.animateWithDuration(3, animations: { 
     self.pb.setProgress((self.pb.progress + 0.33), animated: true) 
     }, completion: nil) 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

}