В objective-C я смог использовать:
CGSize stringsize =
[strLocalTelefone sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f]}];
Но в Swift Language я не нашел решения для этой ситуации.
Любая помощь?
В objective-C я смог использовать:
CGSize stringsize =
[strLocalTelefone sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14.0f]}];
Но в Swift Language я не нашел решения для этой ситуации.
Любая помощь?
Всего одно решение:
yourLabel.intrinsicContentSize.width
для Objective-C/Swift
Это будет работать, даже если текст вашей метки имеет произвольный интервал между текстами.
что я сделал, это что-то вроде этого:
let myString = "Some text is just here..."
let size: CGSize = myString.size(withAttributes: [.font: UIFont.systemFont(ofSize: 14)])
let myString = "Some text is just here..."
let size: CGSize = myString.size(withAttributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 14)])
var originalString: String = "Some text is just here..."
let myString: NSString = originalString as NSString
let size: CGSize = myString.size(attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 14.0)])
var originalString: String = "Some text is just here..."
let myString: NSString = originalString as NSString
let size: CGSize = myString.sizeWithAttributes([NSFontAttributeName: UIFont.systemFontOfSize(14.0)])
Просто используйте явное литье:
var stringsize = (strLocalTelefone as NSString).sizeWithAtt...
В противном случае вы также можете его соединить:
Bridging больше не поддерживается в более поздних версиях Swift.
var strLocalTelefone = "some string"
var stringsize = strLocalTelefone.bridgeToObjectiveC().sizeWithAttributes([NSFontAttributeName:UIFont.systemFontOfSize(14.0)])
Этот ответ стоит, по крайней мере, посмотреть, поскольку он подчеркивает потенциальные различия между двумя подходами.
Вы также можете использовать этот кусок кода, это проще, и вам не нужно создавать новую переменную, чтобы получить объект NSString:
var stringToCalculateSize:String = "My text"
var stringSize:CGSize = (stringToCalculateSize as NSString).sizeWithAttributes([NSFontAttributeName: UIFont.systemFontOfSize(14.0)])
В xCode 6.3 это то, что вам нужно сделать сейчас:
let font:AnyObject = UIFont(name: "Helvetica Neue", size: 14.0) as! AnyObject
let name:NSObject = NSFontAttributeName as NSObject
let dict = [name:font]
let textSize: CGSize = text.sizeWithAttributes(dict)
В xCode 8.0 это то, что вам нужно сделать сейчас: let charSize = string.size(attributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 20)])