如何创建垂直进度条-IOS-Swift

如何创建垂直进度条-IOS-Swift,ios,swift,uiprogressview,Ios,Swift,Uiprogressview,我正在尝试创建一个垂直进度条。但问题是我的代码在IOS11或更高版本上运行,但在IOS9上运行不正常 在IOS11或更高版本上,它看起来像: 但是在IOS9上,它看起来像: 我的代码: let progressBar: UIProgressView = { let prgressView = UIProgressView() prgressView.progress = 0.7 prgressView.progressTintColor = UIColor(red: 1

我正在尝试创建一个垂直进度条。但问题是我的代码在IOS11或更高版本上运行,但在IOS9上运行不正常

在IOS11或更高版本上,它看起来像:

但是在IOS9上,它看起来像:

我的代码:

let progressBar: UIProgressView = {
    let prgressView = UIProgressView()
    prgressView.progress = 0.7
    prgressView.progressTintColor = UIColor(red: 1.0, green: 0.21, blue: 0.33, alpha: 1)
    prgressView.trackTintColor = UIColor.blue
    prgressView.layer.cornerRadius = 6.5
    prgressView.clipsToBounds = true
    prgressView.transform = CGAffineTransform(rotationAngle: .pi / -2)
    prgressView.translatesAutoresizingMaskIntoConstraints = false
    return prgressView
}()
布局子视图()

viewDidLoad()


我遵循本教程创建垂直进度视图:

我可以通过对您发布的代码进行两次更改,使您的代码在iOS 9和iOS 12下正常工作:

  • 删除
    布局子视图
    。您已经设置了约束。也不要尝试直接修改视图的框架
  • 交换宽度和高度约束。如果没有应用转换,请考虑进度条的大小。您希望宽度为250,高度为22.5。转换不会改变这一点。变换只会使它看起来像250高,但它仍然是250宽
  • 简而言之,删除
    layoutSubviews
    ,并将约束修复为:

    progressBar.widthAnchor.constraint(equalToConstant: 250).isActive = true
    progressBar.heightAnchor.constraint(equalToConstant: 22.5).isActive = true
    

    截至2018年9月3日,因此。。为什么要担心呢?只需设置你的最低iOS版本就可以了。这不像Android,人们可以随意选择操作系统。一旦人们收到有新版本的通知,他们通常会安装它。没有回头路了。是的,我已经试过了,但问题是当我尝试应用一些顶锚或底锚时,锚定点根据预期的22.5的高度开始。同样,约束将应用于不进行变换的视图。因此,如果您希望垂直进度条的“顶部”距离顶部40点,您确实需要将约束设置为
    (宽度-高度)/2+偏移量
    (250-22.5)/2+40
    。此时您已经超出了原来的问题,因为这不是任何iOS版本所特有的。谢谢,我将尝试此方法。您还可以
    覆盖var intrinsicContentSize
    以返回高度和宽度已交换的CGSize。例如,
    CGSize(宽度:rotatedView.intrinsicContentSize.height,高度:rotatedView.intrinsicContentSize.width)
        self.addSubview(progressBar)
        progressBar.centerXAnchor.constraint(equalTo: self.centerXAnchor).isActive = true
        progressBar.centerYAnchor.constraint(equalTo: self.centerYAnchor).isActive = true
        progressBar.widthAnchor.constraint(equalToConstant: 22.5).isActive = true
        progressBar.heightAnchor.constraint(equalToConstant: 250).isActive = true
    
    progressBar.widthAnchor.constraint(equalToConstant: 250).isActive = true
    progressBar.heightAnchor.constraint(equalToConstant: 22.5).isActive = true