1

我正在将新行添加到字符串中,如下所示:

unichar newLineChar = NSNewLineCharacter;
NSString *newLineCharAsStr = [NSString stringWithCharacters:&newLineChar length:1];
NSString * newLine = [[NSString alloc] initWithString: newLineCharAsStr];
[finalString appendString: newLine];

但是在 Core Text 中呈现的结果给了我两个换行符。即两个文本块之间的空行。我只想终止一行并在新行上开始下一行(即之间没有空行)。

如果我删除了 appendString,那么文本会连续流动(即没有添加换行符),所以我可以确认我没有意外添加两次换行符。我也尝试过NSCarriageReturnCharacter, NSLineSeparatorCharacterandNSParagraphSeparatorCharacter以及\rand \n,但这在所有情况下都会发生。

我觉得我可能找错地方了,但有人能帮忙吗?

更新:我从下面提供的链接之一收集核心文本中的 '\n'结束一个段落,在当前行下方插入一个换行符。这可以解释为什么总是插入换行符。所以我想精炼的问题是,Core Text 中的什么会简单地换行而不是插入断句?即期望的结果是

第 1
行。第 2 行。

而不是:

第 1

行。第 2 行。

这就是我目前得到的。

4

2 回答 2

0

检查此代码:

在第 3 行,我使用newLineChar了而不是你的paraChar

NSMutableString *finalString=[[NSMutableString alloc]initWithString:@"hi all"];

unichar newLineChar = '\n';    
NSString *newLineCharAsStr = [NSString stringWithCharacters:&newLineChar length:1];
NSString * newLine = [[NSString alloc] initWithString: newLineCharAsStr];
[finalString appendString: newLine];

[finalString appendString:@"bye now"];

 NSLog(@"==>%@",finalString);
于 2013-01-15T13:37:07.220 回答
0

这确实是在不使用换行符的情况下定义核心文本段落的变体答案?正如特洛伊木马所建议的那样。根本没有办法强制 Core Text 将换行符视为那样,而不是换行符。

因此,缩小段落间距以使 '\n' 只换行的唯一方法是将核心文本段落属性中的 'kCTParagraphStyleSpecifierParagraphSpacing' 和 'kCTParagraphStyleSpecifierParagraphSpacingBefore' 设置为 0.0,这就是我所做的 - 现在一切都很好.

于 2013-01-15T15:38:17.257 回答