2016-07-18 6 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 
} 
Смежные вопросы