【问题标题】:Double line break being added instead of one添加双换行符而不是一个
【发布时间】:2013-01-15 13:27:52
【问题描述】:

我正在向字符串中添加一个新行,如下所示:

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

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

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

我觉得我可能找错地方了,但谁能帮忙?

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

第 1 行。
第 2 行。

而不是:

第 1 行。

第 2 行。

这是我目前得到的。

【问题讨论】:

标签: ios objective-c nsstring core-text


【解决方案1】:

检查此代码:

在第 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);

【讨论】:

  • 似乎有很多代码可以简单地执行[finalString appendString:@"\n"];,这如何帮助 OP 解决他的(CoreText 相关)问题。他的代码已经正确。
  • 我在代码中只更新了newLineChar而不是paraChar,只是为了显示完整的代码。
  • 但是它是如何解决问题的呢?您刚刚展示了使用 NSNewLineCharacter 的替代方法,仅此而已。
  • 你是对的 \n 会起作用,但为什么他想使用 unichar 换行符等......所以我以他的方式解决了......:p
  • 检查他使用的第二行 paraChar 我想应该有 newLineChar
【解决方案2】:

这确实是特洛伊木马建议的Define Core Text paragraphs without using newline character? 上的变体答案。根本没有办法强制 Core Text 将换行符当作换行符,而不是换行符。

因此,缩小段落间距以便 '\n' 只换行的唯一方法是将核心文本段落属性中的 'kCTParagraphStyleSpecifierParagraphSpacing' 和 'kCTParagraphStyleSpecifierParagraphSpacingBefore' 设置为 0.0,这就是我所做的 - 全部现在看起来很棒。

【讨论】:

  • 从概念上讲,一个段落以换行符结束,而其内容行在其矩形到达段落矩形边缘时换行。
猜你喜欢
  • 1970-01-01
  • 2014-04-13
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 2012-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多