Ios Swift UILabel未设置正确的y值

Ios Swift UILabel未设置正确的y值,ios,swift,uilabel,Ios,Swift,Uilabel,我已经确认,指定给addLabel函数的值正在更改,但在打印label.frame.origin.y时,它总是显示0。目前,代码看起来很糟糕,因为我已经为这个问题挣扎了一段时间。有什么想法吗 var newY: Int = 8 var mainViewNewHeight: Int = 251 func setContentFromList(content: [String], target: UIView, targetHeight: NSLayoutConstrain

我已经确认,指定给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)
    }
您的问题在于高度:CGFloat.greatestfinitemagnity删除CGFloat.greatestfinitemagnity并将其替换为整数值,您将看到您的代码可以正常工作

所以基本上:

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

这很明显,但是当前的标签彼此堆叠。我需要它们在彼此下面。不要将sizeToFit与自动布局一起使用。。。