首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在多个rects中绘制一个NSString

在多个rects中绘制一个NSString
EN

Stack Overflow用户
提问于 2012-05-10 15:36:03
回答 2查看 252关注 0票数 0

我有一个非常长的字符串,有数千行默认字体。所以,与其在一个表视图单元格中画出整件事,我还要创建几个单元格来绘制相同的字符串,每个单元格都绘制字符串的下一部分。

我很难找到一个起点。比如说,我在正方形中画出了字符串的前500个像素--我怎么知道从哪里开始呢?如果是相同的字符串,我如何指定它只绘制字符串的某些部分?

每个单元格都知道它是自己的行号,所以我可以确定我在表中的确切位置,我只是不知道字符串如何知道它应该画哪个部分。

或者另一个问题是:如何根据一定数量的行将一个字符串拆分成多个字符串?

编辑:这里有一些我发现可能有用的NSString方法,但我仍然不知道如何在我的例子中使用它们:

代码语言:javascript
复制
- (void)getLineStart:(NSUInteger *)startIndex end:(NSUInteger *)lineEndIndex contentsEnd:(NSUInteger *)contentsEndIndex forRange:(NSRange)aRange
- (NSRange)lineRangeForRange:(NSRange)aRange
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-10 16:04:09

使用substringWithRange:,这将允许您选择字符串的起始点和结束点。我会用几个字符来抓取每一节。所以第1节是0-500,第2节是500-1000。这里的问题是你可能会在句子中间被切断。您可以使用类似于lineRangeForRange的内容来确定子字符串的范围。

代码语言:javascript
复制
lineRangeForRange
Returns the range of characters representing the line or lines containing a given range.

- (NSRange)lineRangeForRange:(NSRange)aRange
Parameters
aRange
A range within the receiver.
Return Value
The range of characters representing the line or lines containing aRange, including the line termination characters.

编辑

代码语言:javascript
复制
NSString *string = @"tjykluytjghklukytgjhkkghkj sdkjlhfkjsadgfiulgeje fuaeyfkjasdgfueghf aksjgflkj. wyruehskjluishfoeifh uasyeajhkfa uiyelkjahsdf uayekljshdf aehkfjsd. \n I iheio;fajkdsf sdfhlueshkfjskdhf ujhelkjfh. luehljkfhlsdf. leufhlkjdshfa. \n euoiywhfldsjkhf euyhfsdlkj. ewhlkjfsd. euilhfsdkjishdkjf euhjklsfd. \n";
NSLog(@"string length:%i", [string length]);
NSRange range;
range.length = [string length]/2;
range.location = 0;
NSLog(@"LineRangeForRange:%i", [string lineRangeForRange:range].length);
NSLog(@"Substring:%@", [string substringWithRange:[string lineRangeForRange:range]]);

日志显示:

代码语言:javascript
复制
string length:295
LineRangeForRange:148
Substring:tjykluytjghklukytgjhkkghkj sdkjlhfkjsadgfiulgeje fuaeyfkjasdgfueghf aksjgflkj. wyruehskjluishfoeifh uasyeajhkfa uiyelkjahsdf uayekljshdf aehkfjsd.

所以我为LineRangeForRange提供了一个范围,从字符串的0到一半。最后一行"\n“可能在那个范围内。然后我抓住了那个子串

票数 1
EN

Stack Overflow用户

发布于 2012-05-10 16:04:56

听起来不像是我想在应用程序里阅读文本的方式。为什么不使用textView呢?

编辑:我的建议不是将textView放在tableViewCell中,而是显示文本的开头,然后单击push a viewControllers来显示textView。就像邮件一样。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10537477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档