0

我正在为 iPhone 和 iPod Touch 制作一个 RSS 解析器,我需要能够为每篇文章设置每个单元格中显示的行数。我想打破每 39 个字符,这是最适合我正在使用的字体大小的一行。

我想将字符串中的字符数除以每行的字符数。我想有一个整数作为答案,必要时四舍五入。

这就是我到目前为止所拥有的。怎么了?

NSNumber *lines = [[NSNumber alloc] initWithInteger:[cell.textLabel.text length]/kLineLength];

    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];

    [formatter setRoundingMode:NSNumberFormatterRoundUp];
    [formatter setRoundingIncrement:[[[NSNumber alloc]initWithInteger:1]autorelease]];

    NSNumber *roundedLines = [[NSNumber alloc]initWithInteger: [[formatter numberFromString:[lines stringValue]]integerValue]];

    [cell.textLabel setNumberOfLines:[roundedLines integerValue]];

    [roundedLines release];
    [formatter release];
    [lines release];

编辑

我不是在换行之后,而是知道要给标签多少行。所以,虽然我有效地设置换行符,但我并没有真正这样做。我让 iOS 找出中断的地方,我只是告诉它要使用多少行。

4

3 回答 3

1

不要自己这样做。让UILabelor UITextVieworUIWebView为你做那件事。每个字母都有不同的宽度。为每个字符插入换行符没有任何意义N

我的意思是,排版是一门复杂的艺术,自古腾堡时代以来已经培养了数百年。我自己不敢这样做。把它留给专家(即 API 实现者)。

于 2010-09-14T19:09:10.607 回答
0

我不确定您到底想在这里完成什么,但您可能无法使用 cell.textLabel 并且必须使用自定义 UITableViewCell ..

如果您设置 cell.textLabel.numberOfLines = 2; ,UILabel 对象也会在必要时自动生成换行符

于 2010-09-14T18:58:02.210 回答
0

不确定您给出的这个复杂的解决方案是否是个玩笑:-)

int numberOfCharacters = ....;
int kLineLength = 39;

int lines = (numberOfCharacters + kLineLength - 1) / kLineLength;

不需要任何格式化程序等。

编辑:无论如何,你可能会对固定的线宽感到失望,因为自动换行会(应该!)让你的线更短。

于 2010-09-14T18:59:13.533 回答