gpt4 book ai didi

ios - 获取 UITextView 内容作为行数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:07:24 26 4
gpt4 key购买 nike

有什么方法可以将 UITextView 的内容检索为换行时的行数组?

我可以用愚蠢的方式来做,用 sizeWithFont 逐字测量,看看它可能在哪里换行,但我希望有更聪明的方法吗?

干杯

最佳答案

您可以使用 textviews 布局管理器来获取它们。但它可以从 ios 7 获得。您可以使用布局管理器的方法 - ( enumerateLineFragmentsForGlyphRange:usingBlock: )

下面的代码打印结果如下:

_textView.text = @"abcdsakabsbdkjflk sadjlkasjdlk asjkdasdklj asdpaandjs bajkhdb hasdskjbnas kdbnkja sbnkasj dbkjasd kjk aj";
NSLog(@"%d", _textView.text.length); // length here is 104.

[_textView.layoutManager enumerateLineFragmentsForGlyphRange: NSMakeRange(0, 104) usingBlock: ^(CGRect rect, CGRect usedRect, NSTextContainer *textContainer, NSRange glyphRange, BOOL *stop) {
NSLog(@"rect %@ - usedRect %@ - glyphRange %d %d -", NSStringFromCGRect(rect), NSStringFromCGRect(usedRect), glyphRange.location, glyphRange.length);
}];

打印结果:

2013-12-17 12:48:40.250 testEmpty[675:a0b] rect {{0, 0}, {200, 13.8}} - usedRect {{0, 0}, {176.08398, 13.8}} - glyphRange 0 31 -
2013-12-17 12:48:40.251 testEmpty[675:a0b] rect {{0, 13.8}, {200, 13.8}} - usedRect {{0, 13.8}, {182.11328, 13.8}} - glyphRange 31 31 -
2013-12-17 12:48:40.251 testEmpty[675:a0b] rect {{0, 27.6}, {200, 13.8}} - usedRect {{0, 27.6}, {168.75977, 13.8}} - glyphRange 62 28 -
2013-12-17 12:48:40.252 testEmpty[675:a0b] rect {{0, 41.400002}, {200, 13.8}} - usedRect {{0, 41.400002}, {82.035156, 13.8}} - glyphRange 90 14 -

因此在 block 的每次运行中,您将获得 glyphRange.length 作为该行中使用的字符串的长度。

关于ios - 获取 UITextView 内容作为行数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20625855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com