16

我有一个视图,其唯一的 UI 元素是UITextView. 在viewDidLoad:我使用“Text\n”创建一个属性字符串并将文本视图的属性文本设置为:

NSAttributedString *string = [[NSAttributedString alloc] initWithString:@"Text\n"];  
[self.textView setAttributedText:string];

我的问题是,当我运行应用程序时,换行符被忽略了。

如果我使用 anNSString并且setText:不会发生。

NSString *string = [[NSString alloc] initWithString:@"Text\n"];  
[self.textView setText:string];

任何人都可以对正在发生的事情有所了解吗?我似乎在文档或其他方面找不到任何东西。

4

2 回答 2

7

你可以使用这个:

 NSMutableAttributedString *cr = [[NSMutableAttributedString alloc] initWithString: @"\n"];

因此,如果您有两个 NSMutableAttributedString(string1 和 string2),您可以这样做:

[string1 appendAttributedString: cr];
[string1 appendAttributedString: string2];

这是可怕的,不优雅....但它的工作原理!

于 2014-07-01T13:06:44.700 回答
3

我建议您使用:

[[NSAttributedString alloc] initWithHTML:[@"Text<BR />" dataUsingEncoding:NSUTF8StringEncoding] documentAttributes:NULL];

我一直在使用它,而且效果很好。我什至用它做了一个宏:

#define html2AttributedString(htmlString)                                                                   \
    [[[NSAttributedString alloc] initWithHTML:[(htmlString) dataUsingEncoding:NSUTF8StringEncoding]         \
    documentAttributes:NULL] autorelease]

然后,您可以为颜色、对齐方式、字体等制作宏…</p>

简而言之,您只需"\n"将字符串中的所有内容替换为<BR />并使用上面提供的代码。对于更换部件,请使用:

[yourString stringByReplacingOccurrencesOfString:... withString:…];

对于 iOS,您可以查看他们为您提供替代品的此页面

我们的 initWithHTML 方法旨在完美匹配 Mac 版本的输出。这对于角色来说是可以实现的,并且我已经进行了单元测试,以确保它保持完美。关于属性,有很多事情必须在 iOS 上稍有不同才能实现相同的外观。我不会用那里的细节来打扰你。

于 2013-03-24T02:25:00.877 回答