我正在为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弄清楚要去哪里,我只告诉它要使用多少行。
答案 0 :(得分:1)
不要自己这样做。让UILabel
或UITextView
或UIWebView
为您执行此操作。每个字母都有不同的宽度。为每个N
字符插入换行符没有任何意义。
我的意思是,排版是一项复杂的艺术,自古腾堡时代以来已经培育了数百年。我自己也不敢这样做。将其留给专家(即API实施者)。
答案 1 :(得分:0)
我不确定你到底想要完成什么,但你可能无法使用cell.textLabel并且必须使用自定义UITableViewCell ..
如果设置了cell.textLabel.numberOfLines = 2,那么UILabel对象也会在必要时自动生成换行符。
答案 2 :(得分:0)
不确定你提供的这个复杂的解决方案是否是一个笑话: - )
int numberOfCharacters = ....;
int kLineLength = 39;
int lines = (numberOfCharacters + kLineLength - 1) / kLineLength;
不需要任何格式化程序等。
编辑:你可能会对固定的线宽感到失望,因为自动换行会(应该!)使你的线条更短。