问题描述
我是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)