如何获取字符串中字符的坐标(x,y)



我需要获取字符串中字符的xy坐标,但找不到任何最新的答案。我怎样才能做到这一点?我在这里找到了这篇文章:Swift:如何找到UILabel中字母的位置(x,y(?但是.rangeOfString不再可用:

extension String {
func characterPosition(character: Character, withFont: UIFont = UIFont.systemFontOfSize(18.0)) -> CGPoint? {
guard let range = self.rangeOfString(String(character)) else {
print("(character) is missed")
return nil
}
let prefix = self.substringToIndex(range.startIndex) as NSString
let size = prefix.sizeWithAttributes([NSFontAttributeName: withFont])
return CGPointMake(size.width, 0)
}

你知道如何让它再次发挥作用吗?

您的Swift语法非常旧(Swift 2(。将range.startIndex更改为range.lowerBoundsubstringToIndex现在被称为子字符串(to:Index(,但它已被弃用,您应该使用下标self[..<range.lowerBound]。顺便说一句,如果您正在寻找一个字符的索引,则不需要使用Stringrange(of: String)。您可以使用收集方法firstIndex(of: Element):

extension StringProtocol {
func characterPosition(character: Character, with font: UIFont = .systemFont(ofSize: 18.0)) -> CGPoint? {
guard let index = firstIndex(of: character) else {
print("(character) is missed")
return nil
}
let string = String(self[..<index])
let size = string.size(withAttributes: [.font: font])
return CGPoint(x: size.width, y: 0)
}
}

最新更新