根据this answer,我可以使用intrinsicContentSize自动计算宽度/高度。那就是我所做的,但是结果是0, 0

class AutoSizeUIButton: UIButton{
    override func intrinsicContentSize() -> CGSize {
        return CGSizeMake(self.frame.size.width, self.titleLabel!.frame.size.height)
    }
}


networkButton.setTitle("something-here", forState: .Normal)
networkButton.titleLabel?.font = UIFont(name: "HelveticaNeue", size: 20.0)!
let networkSize = networkButton.intrinsicContentSize()
print("button size", networkSize.width, networkSize.height)  //prints 0.0, 0.0

难道我做错了什么?注意:我不想使用约束。我只想打印宽度/高度。

最佳答案

尝试networkButton.sizeThatFits。

let networkSize = networkButton.sizeThatFits(CGSizeZero)
print("button size", networkSize.width, networkSize.height)

(传递给sizeThatFits的参数通常会被忽略,并且记录不充分。我不确定CGSizeZero是否可在任何地方使用-也许您应该传递任意大的尺寸)

关于ios - 如何计算给定文本和字体的UIButton的宽度和高度?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37104612/

10-13 01:11