给定文本和字体,如何计算 UIButton 的宽度和高度?

Posted

技术标签:

【中文标题】给定文本和字体,如何计算 UIButton 的宽度和高度?【英文标题】:How do I calculate the width and height of UIButton given the text and font? 【发布时间】:2016-05-08 20:42:58 【问题描述】:

根据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

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

【问题讨论】:

试试这个代码 UIFont *font = [UIFont fontWithName:@"Helvetica" size:30]; NSDictionary *userAttributes = @NSFontAttributeName:字体,NSForegroundColorAttributeName:[UIColor blackColor]; NSString *text = @"你好"; ... const CGSize textSize = [文本 sizeWithAttributes: userAttributes]; 【参考方案1】:

试试 networkButton.sizeThatFits。

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

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

【讨论】:

【参考方案2】:

试试这个:

networkButton.sizeToFit()

现在网络按钮的大小适合它的文本

【讨论】:

以上是关于给定文本和字体,如何计算 UIButton 的宽度和高度?的主要内容,如果未能解决你的问题,请参考以下文章

如何正确自动缩放 UIButton 和标题文本?

如何计算已知字体大小和字符的 WPF TextBlock 宽度?

使用 PHP GD 计算文本宽度

如何测量给定字体/大小的数字的像素宽度(C#)

在给定目标打印机的 DPI 的情况下,如何以某种字体计算某些打印文本的大小?

iOS 文本字体的默认宽度和高度