如何正确获取 Swift iOS8 中字符串的宽度?

How to properly get the width of a string in Swift iOS8?

我已经阅读了很多关于此的 SO 帖子,但找不到任何有用的东西。

我的代码:

let englishTextSize    = englishString.sizeWithAttributes([NSFontAttributeName: UIFont.systemFontOfSize(14)])
let englishLabel       = UILabel(frame: CGRectMake(self.view.center.x, 150, englishTextSize.width, englishTextSize.height))

此代码片段导致我的文本周围出现省略号,从而避免了宽度不够大的情况。

文本本身使用了很多晦涩难懂的字符,例如:

svarūpe-'vasthānam

但我无法想象会如此放弃。接受 Swift 或 Obj-C 中的任何提示,但最好是 Swift!

无需自己计算宽度。您可以使用 sizeToFit 使宽度和高度适合文本,然后将框架更改为您想要的高度和原点。

类似于:

[englishLabel sizeToFit];
[parentView addSubview:englishLabel];
englishLabel.center = [parentView convertPoint:parentView.center
                                  fromView:parentView.superview];

您的代码可以像这样简单:

let englishLabel = UILabel(CGRectZero)
label.text = englishString
label.sizeToFit()
label.center = CGPointMake(self.view.center.x, 150)

取决于属性

let englishTextSize = englishString.sizeWithAttributes([NSFontAttributeName: UIFont.systemFontOfSize(14)])
let englishLabel = UILabel(frame: CGRectMake(self.view.center.x, 150, englishTextSize.width, englishTextSize.height))

print(englishLabel.text.sizeWithAttributes(orderAttributes).width)

下面的代码非常适合 me.Hope 它也会帮助你...

    let name = "Statue of liberty"
    let size = (name as NSString).size(attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 14)])