确定 UITextView 将截断字符串的位置

Posted

技术标签:

【中文标题】确定 UITextView 将截断字符串的位置【英文标题】:Determine where UITextView will truncate string 【发布时间】:2016-05-30 10:34:38 【问题描述】:

我有一个带有长字符串的UITextView。文本视图大小由自动布局确定,并设置为尾部截断文本。它看起来像这样:

如何确定显示的字符串范围和截断的范围?

【问题讨论】:

【参考方案1】:

试试这个

class ViewController: UIViewController ,NSLayoutManagerDelegate

@IBOutlet weak var textView: UITextView!
var range :NSRange!
override func viewDidLoad() 
    super.viewDidLoad()


    textView.textContainer.layoutManager?.delegate = self
    let str = textView.text as NSString
    //Regardless of the repeated string
    range = str.rangeOfString("cillium adipisicing")
    print(range)




// Invoked while determining the soft line break point.  When NO, NSLayoutManager tries to find the next line break opportunity before charIndex
func layoutManager(layoutManager: NSLayoutManager, shouldBreakLineByWordBeforeCharacterAtIndex charIndex: Int) -> Bool

    // charIndex is in the string or not
    if range.location != NSNotFound && NSLocationInRange(charIndex, NSRange(location: range.location + 1, length: range.length - 1 )) 
        print("range of string is truncated -> charIndex is \(charIndex)")
    
    return  true


但仅限于BreakLineByWord,如果单词没有“”并被截断,charIndex is 0

希望对你有帮助:)

【讨论】:

以上是关于确定 UITextView 将截断字符串的位置的主要内容,如果未能解决你的问题,请参考以下文章

iphone UitextView 文本被截断

使用自动布局的 UITextView 动态高度 - 每个新行的文本截断顶行

SQL 字符串或二进制数据将被截断,列名

UITextView 限制字符并显示剩余计数

UITextView 设置属性后做啥?

是否可以制作一个 UILabel、UITextView 或类似的东西,它总是在不截断的情况下调整其高度以适应其在 Interface Builder 中的内容?