我有一个应用程序,允许用户在一系列UITextView
s中输入评论。完成后,应用程序会生成pdf报告。由于输入的文本长度不同,因此应用程序需要计算将文本放在pdf上的位置。
我无法弄清楚的是如何检测文本中是否包含了返回,以便我可以将文本放在pdf下方。我需要在文本全部完成时以及在页面返回时扫描文本,因此在按下键时不能完成。
答案 0 :(得分:2)
我原以为真正的问题不是字符串中有多少换行符,而是渲染文本需要多少空间(不仅包括用户输入的次数,还包括多少次将文本包裹的次数,因为它太长而无法放在单行上)。
如果您使用drawInRect
之类的内容绘制文字,则返回CGSize
,告诉您它占用了多少空间,这非常方便。或者,如果您想知道在渲染之前需要多少空间,可以使用sizeWithFont
。如果您使用CGContextShowText
撰写文字,则会更复杂。
正如史蒂夫所说,你可以使用componentsSeparatedByString
创建这些行的数组,并计算元素的数量。
NSInteger count = [[string componentsSeparatedByString:@"\n"] count];
或者你可以枚举这些行:
- (NSInteger)countLinesInString:(NSString *)string
{
__block NSInteger count = 0;
[string enumerateLinesUsingBlock:^(NSString *line, BOOL *stop) {
count++;
}];
return count;
}
或者您实际上可以计算换行符的数量:
- (NSInteger)countOccurrencesOfNewlineInString:(NSString *)string
{
NSInteger count = 0;
NSUInteger length = [string length];
for (NSUInteger i = 0; i < length; i++)
{
if ([string characterAtIndex:i] == '\n')
count++;
}
return count;
}
答案 1 :(得分:1)
这应该这样做。
NSInteger numberOfLines = [[yourString componentsSeparatedByString:@“\ n”] count];