所以我想在每次按下按钮时更改UILabel(进度条)的长度
下面是我如何在视图控制器中设置标签
@IBOutlet weak var progressLabel: UILabel!
@IBAction func answerPressed(_ sender: AnyObject) {
progressBar.frame.size.width = progressBar.frame.size.width + 100
}
但是我继续为progressBar.frame.size.width获取相同的值,是否有用于设置宽度的独特功能?
The yellow bar Does not increase in width after clicking the answerPressed
答案 0 :(得分:1)
为标签设置约束,如果文本计数增加,它将自动适合文本。
答案 1 :(得分:0)
如果只是在更改宽度之后添加此内容:
progressBar.layoutIfNeeded()
应该可以
答案 2 :(得分:0)
根据您添加视图的方式而有所不同。我添加了一个示例,该示例通过代码无约束地添加了UILabel,并从带有约束的情节提要中添加了UILabel,我还为该UILabel设置了宽度约束,并且也将其限制了:
class ViewController: UIViewController {
var progressBar: UILabel!
@IBOutlet weak var progressBarOutlet: UILabel! //From Storyboard
@IBOutlet weak var progressBarBottomConstraint: NSLayoutConstraint! //Bottom constraint of the progressBarOutlet
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
progressBar = UILabel(frame: CGRect(x: 0, y: 200, width: 10, height: 40))
progressBar.backgroundColor = .systemPink
view.addSubview(progressBar)
let b = UIButton(frame: CGRect(x: 200, y: 500, width: 60, height: 60))
b.setTitle("Add", for: .normal)
b.setTitleColor(.blue, for: .normal)
view.addSubview(b)
b.addTarget(self, action: #selector(addWidth), for: .touchUpInside)
}
@objc func addWidth() {
progressBar.frame.size.width = progressBar.frame.size.width + 50
progressBarBottomConstraint.constant = progressBarBottomConstraint.constant + 50
view.layoutIfNeeded()
}
}