2016-07-18 35 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 
}