gpt4 book ai didi

ios - Swift UILabel 没有设置正确的 y 值

转载 作者:行者123 更新时间:2023-11-28 15:35:49 24 4
gpt4 key购买 nike

我已经确认,赋予“addLabel”函数的值正在改变,但是当打印出“label.frame.origin.y”时,它始终显示为 0。目前,代码看起来很糟糕,因为我已经为这个问题苦苦挣扎了一段时间。有什么想法吗?

    var newY: Int = 8
var mainViewNewHeight: Int = 251

func setContentFromList(content: [String], target: UIView, targetHeight: NSLayoutConstraint) {
newY = 8
var bullet:UILabel!
let width = Int(UIScreen.main.bounds.width) - 84
let font = UIFont(name: "Helvetica", size: 18)
for item in content {
bullet = UILabel(frame: CGRect(x: 8, y: newY, width: 7, height: 17))
bullet.text = "•"
bullet.textColor = UIColor( red: 183/255, green: 110/255, blue:121/255, alpha: 1.0 )
bullet.font = bullet.font.withSize(18)
let a = CGFloat(newY)
print(a) // Correct
addLabel(y: a, text: item, font: font!, width: CGFloat(width), target: target)
target.addSubview(bullet)
}
mainViewNewHeight += newY
targetHeight.constant = CGFloat(newY)
}

这是“addLabel”函数:

    func addLabel(y: CGFloat, text:String, font:UIFont, width:CGFloat, target: UIView) {
let label:UILabel = UILabel(frame: CGRect(x: 22, y: y, width: width, height: CGFloat.greatestFiniteMagnitude))
print("Label y:", label.frame.origin.y) // Invalid (0.0)
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.byWordWrapping
label.font = font
label.text = text
label.sizeToFit()
newY += Int(label.frame.height)

target.addSubview(label)
}

最佳答案

你的问题在 height: CGFloat.greatestFiniteMagnitude 删除 CGFloat.greatestFiniteMagnitude 并用 整数值 替换它,你会看到您的代码将起作用。

所以基本上:

let label:UILabel = UILabel(frame: CGRect(x: 22, y: y, width: width, height: 20))

打印出来:

20.0
Label y: 20.0
41.0
Label y: 41.0
62.0
Label y: 62.0
83.0
Label y: 83.0

关于ios - Swift UILabel 没有设置正确的 y 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44281445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com