2010-09-14 2 views
0

Я создаю парсер RSS для iPhone и iPod Touch, и мне нужно уметь устанавливать количество строк, отображаемых в каждой ячейке для каждой статьи. Я хотел бы сломать каждые 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]; 

EDIT

Я не после того, как линия ломается так много, как знать, сколько строк дать метку. Итак, пока я эффективно устанавливаю перерывы, я на самом деле не делаю этого. Я позволил iOS выяснить, где сломать, я просто расскажу, сколько строк использовать.

ответ

0

Не уверен, если это сложное решение, которое вы дали шутка :-)

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

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

Нет необходимости в каких-либо форматтеров т.д.

Edit: Вы, вероятно, разочарованы ширины фиксированной связи в любом случае, как слово wrapping will (should!) сделает ваши строки короче в любом случае.

+0

Проблема в том, что я не знаю, как долго мои заголовки будут, и я не знаю, сколько строк использовать. Мне нужно рассчитать это «на лету» для каждого заголовка. – Moshe

0

Я не уверен, что вы точно пытаетесь достичь здесь, но вы не можете быть в состоянии использовать cell.textLabel и должны использовать пользовательские UITableViewCell ..

Также объект UILabel автоматически создает разрывы строк там, где необходимо если вы установили cell.textLabel.numberOfLines = 2;

+0

Правильно, но если я установил его на 2, я потеряю текст, если он длиннее двух строк. Я пытаюсь выяснить, что установить 'numberOfLines'. – Moshe

1

Не делайте этого самостоятельно. Пусть UILabel или UITextView или UIWebView сделают это за вас. Каждая буква имеет разную ширину. Не имеет смысла вставлять разрывы строк для каждого N символов.

Я имею в виду, набор текста - это сложное искусство, которое культивируется со времен Гутенберга в течение сотен лет. Я не смею это делать сам. Оставьте это экспертам (т. Е. Разработчикам API).

+0

Я не реализую разрывы строк, я просто устанавливаю свойство «linesLabel» «lines». – Moshe

+0

А, тогда это имеет смысл :) Тогда вы должны сказать, что в вашем вопросе ...: p – Yuji

+0

ok, я добавил его. – Moshe