2016-07-18 36 views
-4

我发现这些代码,但似乎无法正常工作。如何评估字符串宽度并转换为CGFloat(swift)

func evaluateStringWidth (textToEvaluate: String) -> CGFloat{ 
    letfont = NSFont.userFontOfSize(NSFont.systemFontSize()) 
    let attributes = NSDictionary(object: font!, forKey:NSFontAttributeName) 
    let sizeOfText = textToEvaluate.sizeWithAttributes((attributes as! [String : AnyObject])) 
    return sizeOfText.width 
} 
+1

请更具体地描述您的问题。什么“它不起作用”是什么意思?它不编译?它会导致运行时错误?或者它返回意想不到的事情你需要指定你正在使用的平台。您显示的代码是针对OS X(macOS)的。你确定你在OS X上测试你的代码吗? – OOPer

回答

0

我不明白你的意思。 所以,我猜测回答。

func evaluateStringWidth (textToEvaluate: String) -> CGFloat { 
    let maxSize = self.view.frame.size //set your view or label size 
    let attributesDictionary = [NSFontAttributeName: UIFont.systemFontOfSize(14.0)] //set your font object 
    let textSize = NSString(string: textToEvaluate).boundingRectWithSize(maxSize, options: .UsesLineFragmentOrigin, attributes: attributesDictionary, context: nil) 

    return textSize.width 
}