Swift iOS: UIButton.frame 给出全 0

Swift iOS: UIButton.frame gives all 0s

我是 iOS 和 Swift 以及 UIKit 的新手,所以有许多项目被证明是令人困惑的。我创建了一个 UIButton,添加了一些文本,然后尝试获取按钮的 CGRect,但所有值都为零。其实我只是对宽度感兴趣。

这是我的代码(menuButtonMaxWidth 是一个 class 变量)

    menuButtonMaxWidth = 0
    let overflowItem1 = UIButton()
    let checkboxCharacter: Character = "\u{25EF}"
    overflowItem1.setTitle("\(checkboxCharacter) Allow Hub Wifi Reset", for: [])
    overflowItem1.setTitleColor(UIColor.white, for: [])
    overflowItem1.addTarget(self, action: #selector(overflowItem1Clicked(_:)), for: UIControl.Event.touchUpInside)
    overflowItem1.translatesAutoresizingMaskIntoConstraints = false
    if overflowItem1.frame.width > menuButtonMaxWidth {
        menuButtonMaxWidth = overflowItem1.frame.width
    }

overflowItem1.frame.width总是给零!调试显示 overflowItem1.frame 的 CGRect 具有全零值。我究竟做错了什么?这似乎应该如此直截了当。谢谢你的帮助。我一定是遗漏了一些东西或做了一些 iOS 禁忌但还没有流行起来的事情。

我使用的是 Xcode 12,我假设是 Swift 的最新版本。

在您的按钮上调用 sizeToFit() 以根据其内容调整其大小。

    let overflowItem1 = UIButton()
    let checkboxCharacter: Character = "\u{25EF}"
    overflowItem1.setTitle("\(checkboxCharacter) Allow Hub Wifi Reset", for: [])
    overflowItem1.setTitleColor(UIColor.white, for: [])
            
    overflowItem1.sizeToFit()
    print(overflowItem1.frame.width)