You can use the method firstRectForRange(_:)onUITextView
let textFont = [NSFontAttributeName: UIFont(name: "GillSansMT", size: 30.0) ?? UIFont.systemFontOfSize(18.0)]
let attrString1 = NSMutableAttributedString(string: "My name is Dug.", attributes: textFont)
let str1 = attrString1.string as NSString
let range = str1.rangeOfString("name", options: nil, range: NSMakeRange(0, str1.length))
let textView = UITextView(frame:CGRectMake(0,0,200,200))
textView.attributedText = attrString1
textView.layoutManager.ensureLayoutForTextContainer(textView.textContainer)
let start = textView.positionFromPosition(textView.beginningOfDocument, offset: range.location)!
let end = textView.positionFromPosition(start, offset: range.length)!
let tRange = textView.textRangeFromPosition(start, toPosition: end)
let rect = textView.firstRectForRange(tRange)
source
share