在 Swift 4 中如何获得文本长度?
How do you get text length in Swift 4?
我不确定如何更新此代码:
func textWidth(text: String, font: UIFont?) -> CGFloat
{
let attributes = font?.fontDescriptor.fontAttributes
return text.size(withAttributes: attributes).width
}
Swift4人投诉:
无法转换类型“[UIFontDescriptor.AttributeName : Any] 的值?”到预期的参数类型 '[NSAttributedStringKey : Any]?'
我不知道他们为什么破坏这个,但它不会自动修复。
我猜,你想写这样的东西:
(Swift 4)
func textWidth(text: String, font: UIFont?) -> CGFloat {
let attributes = font != nil ? [NSAttributedStringKey.font: font!] : [:]
return text.size(withAttributes: attributes).width
}
(Swift 3)
func textWidth(text: String, font: UIFont?) -> CGFloat {
let attributes = font != nil ? [NSFontAttributeName: font!] : [:]
return text.size(attributes: attributes).width
}
fontAttributes
不是 size(withAttributes:)
(Swift 3 中的 size(attributes:)
)的有效输入,即使类型匹配也是如此。
在 Swift 4 中执行此操作的替代方法是这样的:
extension UIFont {
func textWidth(s: String) -> CGFloat
{
return s.size(withAttributes: [NSAttributedStringKey.font: self]).width
}
}
(SWIFT 4 已更新)
func textWidth(text: String, font: UIFont?) -> CGFloat {
let attributes = font != nil ? [NSFontAttributeName: font] : [:]
return text.size(withAttributes: attributes).width
}
希望对您有所帮助。
我不确定如何更新此代码:
func textWidth(text: String, font: UIFont?) -> CGFloat
{
let attributes = font?.fontDescriptor.fontAttributes
return text.size(withAttributes: attributes).width
}
Swift4人投诉: 无法转换类型“[UIFontDescriptor.AttributeName : Any] 的值?”到预期的参数类型 '[NSAttributedStringKey : Any]?'
我不知道他们为什么破坏这个,但它不会自动修复。
我猜,你想写这样的东西:
(Swift 4)
func textWidth(text: String, font: UIFont?) -> CGFloat {
let attributes = font != nil ? [NSAttributedStringKey.font: font!] : [:]
return text.size(withAttributes: attributes).width
}
(Swift 3)
func textWidth(text: String, font: UIFont?) -> CGFloat {
let attributes = font != nil ? [NSFontAttributeName: font!] : [:]
return text.size(attributes: attributes).width
}
fontAttributes
不是 size(withAttributes:)
(Swift 3 中的 size(attributes:)
)的有效输入,即使类型匹配也是如此。
在 Swift 4 中执行此操作的替代方法是这样的:
extension UIFont {
func textWidth(s: String) -> CGFloat
{
return s.size(withAttributes: [NSAttributedStringKey.font: self]).width
}
}
(SWIFT 4 已更新)
func textWidth(text: String, font: UIFont?) -> CGFloat {
let attributes = font != nil ? [NSFontAttributeName: font] : [:]
return text.size(withAttributes: attributes).width
}
希望对您有所帮助。