【问题标题】:Indenting on linewrap换行缩进
【发布时间】:2013-05-26 14:43:12
【问题描述】:

我正在从数组中的多个字符串创建一个长字符串,如下所示:

oneString = @"First Line\n";
for (int i = 0; i < itemsToAdd.count; i ++){
    oneString = [NSString stringWithFormat:@"%@   %@\n", oneString, stringToAdd];
}

这一切都很好,直到stringToAdd 足够长可以换行。如果您注意到%@ %@ 之间的空格,这就是缩进。我添加的大多数字符串都不会换行,但我正在尝试找出一种在第一行之后的每一行之前添加空格的方法。

我建立这个长字符串的原因是计算它的高度,以便根据该字符串的长度调整tableViewCell 的大小。 itemsToAdd 是一个可变大小的数组。有时是一行,有时是 15+ 项。

这是示例输出:

First Line
   Item 1 is good
   Item 2 is fine
   Item 3 is long and it wraps so
it goes like this and it sucks
   Item 4 is fine

【问题讨论】:

  • 不是直接回答你的问题,但你为什么不直接使用 NSString 的方法 sizeWithFont 来计算文本渲染时的宽度和高度?您可以将宽度限制为小于您尝试添加的四个空格,它会告诉您缩进后的确切行数。喜欢这篇文章:stackoverflow.com/questions/4965809/…
  • 我还漏掉了另一个循环。 First Line(非缩进部分)具有多个可能的值,例如 Second Line,它们将具有可变数量的项目,就像 First Line 一样。所以这是一种打印数组 (A) 的数组 (B),其中 A 和 B 的长度都未知。
  • 可能是 for (int i = 0; i
  • 我正在简化我的循环,因为它们不是问题。唯一的问题是缩进。

标签: iphone ios objective-c ipad


【解决方案1】:

尝试这样插入制表符空间:

oneString = [NSString stringWithFormat:@"%@%8s\n", oneString, [stringToAdd UTF8String]];

来自how to add tab space into UILabel.text

【讨论】:

    【解决方案2】:

    您需要以文本呈现系统可以理解的方式指定缩进,例如使用 NSParagraphStyle。您需要根据应用支持的 iOS 版本对单元格进行一些更改。您可能想要使用 3rd 方标签类或 DTCoreText 之类的框架。

    【讨论】:

      猜你喜欢
      • 2023-03-23
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      • 2014-05-07
      • 2020-07-29
      • 2021-11-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多