2010-09-14 75 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

相關問題