2010-09-14 203 views
0

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

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

这是我到目前为止。哪里不对?

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知道哪里可以破解,我只是告诉它需要使用多少行。

回答

0

不知道,如果你给了这个复杂的解决方案是一个笑话:-)

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

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

无需任何格式化等

编辑:你可能会与固定的线宽失望反正字无论如何,包装会(应该!)让你的线条变短。

+0

问题是我不知道我的头条会有多久,我不知道有多少条线要使用。我需要为每个标题在飞行中计算此值。 – Moshe 2010-09-14 19:08:28

0

林不知道你究竟想在这里完成,但你可能无法使用cell.textLabel和必须使用自定义的UITableViewCell ..

而且该的UILabel对象自动生成换行符必要如果你设置cell.textLabel.numberOfLines = 2;

+0

没错,但是如果我将它设置为2,那么如果它超过2行,我将丢失文本。我试图找出设置'numberOfLines'的方法。 – Moshe 2010-09-14 19:28:41

1

不要自己动手。让UILabelUITextViewUIWebView为您做到这一点。每个字母都有不同的宽度。插入每个N字符的换行符没有任何意义。

我的意思是,排版是一种复杂的艺术,自古腾堡几百年以来一直栽培。我自己也不敢那么做。将其留给专家(即API实施者)。

+0

我实际上并没有实现换行符,我只是设置了'textLabel的“行”属性。 – Moshe 2010-09-14 19:11:12

+0

嗯,那么有道理:)那么你应该说,在你的问题...:p – Yuji 2010-09-14 19:12:35

+0

好的,我添加了它。 – Moshe 2010-09-14 20:27:02

相关问题