Swift iOS:UIButton.frame为全0

问题描述

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

这是我的代码(menuButtonMaxWidth是一个类var)

    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)