Разбейте строку с помощью \ n, вставьте ее в UITableViewCell и получите высоту - PullRequest
0 голосов
/ 05 марта 2012

Я разрабатываю приложение для iOS 4 с последним SDK и XCode 4.2.

Я использую веб-сервис для получения некоторых текстовых данных.Я не знаю его длины, поэтому мне нужно будет разделить эти строки, чтобы они поместились в пользовательский UITableViewCell.

Этот пользовательский UITableViewCell будет иметь UILabel.И этот ярлык будет заполнен текстом, полученным из веб-службы.

Текст будет содержать названия стран: Испания, Франция, США, Италия и т. Д. Я обработаю эти имена вдобавьте их к уникальной строке.Я сделаю это так: "Испания - Франция - США - ..." .

Одна из моих проблем заключалась в том, что эта строка могла быть такой длинной, и мне нужно ее разбитьв линии для соответствия UILabel ширине.Я решил эту проблему, проверяя каждый раз, когда добавляю '-', будет ли строка больше ширины UILabel.Итак, у меня будет такая строка: "Испания - Франция \ nUSA - ...".

Хорошо.Теперь у меня есть строка с \ n , которая будет помещаться внутри UILabel.Поэтому мне нужно изменить UITableViewCell высоту, чтобы она соответствовала высоте UILabel.

Но когда я использую [NSString sizeWithFont:[UIFont systemFontOfSize:kFontSize]];, я не получаю реальную высоту, я всегда получаю 21.0f.

Я нашел этот учебник о динамической высоте UITableView, но я не знаю, как использовать его с моим кодом.

В двух словах , мне нужно добавить '-' к названиям стран, но если есть возвращаемый результат (потому что строка будет отображаться в другой строке UILabel), мне не нужно добавлять '-' .И когда я получу эту строку, мне придется изменить размер пользовательского UITableViewCell до UILabel высоты.

Любая подсказка?

1 Ответ

1 голос
/ 05 марта 2012

Это то, что вы ищете?

//create a CGFloat variable
CGFloat _height = 0;
//find out the size for your text. Instead of 255 insert the width of your label
CGSize _textSize = [yourString sizeWithFont:[UIFont systemFontOfSize:kFontSize] constrainedToSize:(CGSize) { 255, 9999 }];
//add the height of that CGSize variable to your height in case you will need to add more values
_height += _textSize.height;
//eventually some other calculations

Надеюсь, это поможет

...