如何在Cocoa中创建一个垂直进度条?

时间:2009-08-20 11:54:40

标签: cocoa progress-bar

我正在尝试在我的Cocoa应用程序中创建一个垂直进度条,即进度条应该从下到上增长。我正在使用NSProgressIndicator,我找不到指定垂直或水平的方法。有人可以告诉我是否可以这样做?

谢谢, 利

2 个答案:

答案 0 :(得分:4)

您可以设置控件的变换以旋转pi / 2弧度(90度)。这似乎是大多数人采用的常见解决方案。

答案 1 :(得分:0)

导入UIKit

类ViewController:UIViewController {

// THis is custom Progress view
var progessView:VerticalProgressView!

// We can also use default progress view given by UIKIT
var defaultProgressView:UIProgressView!

override func viewDidLoad() {
    super.viewDidLoad()
    // Custom Progress view
    progessView = VerticalProgressView(frame: CGRect(x: 0, y: 160, width: 15, height: 200))
    progessView.center.x = self.view.center.x - 80
    self.view.addSubview(progessView)

    //Default Progress view
    defaultProgressView = UIProgressView(progressViewStyle: .bar)
    self.view.addSubview(defaultProgressView)
}

override func viewDidLayoutSubviews() {

    defaultProgressView.frame = CGRect(x: self.view.center.x + 30, y: 300, width: 100, height: 300)
    defaultProgressView.progressTintColor = UIColor.green
    defaultProgressView.backgroundColor = UIColor.clear
    defaultProgressView.layer.borderWidth = 0.3
  //defaultProgressView.layer.borderColor = [UIColor.redColor]

    // Change the width of default Progress view
    let customWidth = CGAffineTransform(scaleX: 5.0, y: 3.0)
    // Transform from default horizontal to vertical
    let rotate = CGAffineTransform(rotationAngle: (CGFloat.pi/2 + CGFloat.pi))

    //Two transforms should be concated and applied
    defaultProgressView.transform = rotate.concatenating(customWidth)

}

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


override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)
    self.progessView.setProgress(progress: 0.50, animated: true)
    UIView.animate(withDuration: 0.95) {
        self.defaultProgressView.setProgress(0.50, animated: true)
    }
}

}