如何创建垂直进度条 - IOS - Swift
How to create Vertical Progress Bar - IOS - Swift
我正在尝试创建一个垂直进度条。但问题是我的代码在 IOS11 或 Above 上工作,但在 IOS9 上它不工作。
在 IOS11 或以上 它看起来像:
enter image description here
但是在 IOS9 上看起来像:enter image description here
我的代码:
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
}()
layoutSubview()
override func layoutSubviews() {
super.layoutSubviews()
let width = progressBar.bounds.width
let height = progressBar.bounds.height
progressBar.bounds.size.width = height
progressBar.bounds.size.height = width
}
viewDidLoad()
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
我正在按照本教程创建垂直 progressView:https://www.youtube.com/watch?v=ifekgTtb0rQ&t=1070s
通过对您发布的代码进行两处更改,我能够使您的代码在 iOS 9 和 iOS 12 下正常工作:
- 删除
layoutSubviews
。您已设置约束。也不要尝试直接修改视图的框架。
- 交换宽度和高度限制。如果您没有应用转换,请考虑进度条的大小。您希望宽度为 250,高度为 22.5。转换不会改变这一点。变换只让它看起来像 250 高,但它仍然是 250 宽。
简而言之,移除 layoutSubviews
并将您的约束修正为:
progressBar.widthAnchor.constraint(equalToConstant: 250).isActive = true
progressBar.heightAnchor.constraint(equalToConstant: 22.5).isActive = true
只要将名为transform
的UIView的进度条旋转属性角度就没那么难了
progressBar.transform = CGAffineTransform(rotationAngle: .pi / 2)
我正在尝试创建一个垂直进度条。但问题是我的代码在 IOS11 或 Above 上工作,但在 IOS9 上它不工作。
在 IOS11 或以上 它看起来像: enter image description here
但是在 IOS9 上看起来像:enter image description here
我的代码:
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
}()
layoutSubview()
override func layoutSubviews() {
super.layoutSubviews()
let width = progressBar.bounds.width
let height = progressBar.bounds.height
progressBar.bounds.size.width = height
progressBar.bounds.size.height = width
}
viewDidLoad()
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
我正在按照本教程创建垂直 progressView:https://www.youtube.com/watch?v=ifekgTtb0rQ&t=1070s
通过对您发布的代码进行两处更改,我能够使您的代码在 iOS 9 和 iOS 12 下正常工作:
- 删除
layoutSubviews
。您已设置约束。也不要尝试直接修改视图的框架。 - 交换宽度和高度限制。如果您没有应用转换,请考虑进度条的大小。您希望宽度为 250,高度为 22.5。转换不会改变这一点。变换只让它看起来像 250 高,但它仍然是 250 宽。
简而言之,移除 layoutSubviews
并将您的约束修正为:
progressBar.widthAnchor.constraint(equalToConstant: 250).isActive = true
progressBar.heightAnchor.constraint(equalToConstant: 22.5).isActive = true
只要将名为transform
的UIView的进度条旋转属性角度就没那么难了progressBar.transform = CGAffineTransform(rotationAngle: .pi / 2)