Split String в определенной строке для NSString - PullRequest
2 голосов
/ 29 июня 2009

Здравствуйте, есть способ разделить строку для UITableView в определенной строке, чтобы поместить "остаток" (вторую часть данных) в собственную ячейку

NSString *data;    
CGsize *size = [data sizeOfStringWithFont:[UIFont systemFontOfSize:14] constrainToWidth:280.0];

если size.height, например больше 1500, я хочу разбить строку в этой позиции!

спасибо

Ответы [ 2 ]

1 голос
/ 19 июля 2009

Я думаю, что у Кендалла правильная идея, но ограниченные размеры следует изменить, чтобы получить точную высоту, основанную на переносе слов. Возьмите образец CGSize, который имеет ту же ширину, что и ваша ячейка, но с высотой, превышающей максимальную ожидаемую вами высоту. В приведенном ниже примере кода textSize будет содержать высоту строки, которая будет отображаться в вашей ячейке с неограниченной высотой.

CGSize sz = CGSizeMake (
   yourCellWidth,
   999999.0f );

CGSize textSize = [yourString sizeWithFont:yourCellfont 
                  constrainedToSize:sz
                  lineBreakMode:UILineBreakModeWordWrap];

Если высота больше 1500, вы можете начать выделять подстроки (substringWithRange) с конца и измерять их, как указано выше, пока не получите что-то> = остаток больше 1500, который был возвращен textSize.

1 голос
/ 30 июня 2009

Используйте «constrainedToSize» (а не просто по ширине) и визуализируйте столько, сколько вы можете.

Если вы действительно хотите взять именно тот текст, который вам не подходит, вам придется выполнить поиск, добавляя слово за раз, а затем проверяя размер, чтобы увидеть, как высоко вы поднялись. Вы можете начать с грубой оценки, выполнив всю строку, ограниченную чем-то высотой всего в одну строку с неограниченной шириной (скажем, 999999), а затем разделить ширину на столько строк, сколько вы хотите, чтобы получить грубую начальную точку для добавления / удаление слов из строки (это не будет точно из-за переноса слов).

Фундаментально, хотя кажется странным взять оставшийся текст и поместить его в другую ячейку. Вы действительно уверены, что не хотите просто изменить высоту ячейки с текстом, чтобы она соответствовала целиком?

...