Пользовательская ячейка таблицы iphone, UILabel должна быть прокручиваемой

У меня есть пользовательская ячейка таблицы с UILabel. То, что я хочу, может быть сделано двумя способами.

1. Найдите высоту метки, содержащей длинный текст, и установите rowHeight, чтобы сделать весь текст видимым.

2. Сделайте UILabel прокручиваемым, чтобы пользователь мог перемещать текст вверх / вниз рукой, чтобы прочитать всю строку.

Можете ли вы посоветовать мне, какой из них сделать, как это сделать?

3 ответа

Решение

Если ваш текст статичен и не изменяется динамически, вам следует использовать первый вариант. Вы можете кэшировать результат, чтобы при обновлении таблицы вам не приходилось пересчитывать текст. Вы можете использовать sizeWithFont:constrainedToSize:lineBreakMode, чтобы вычислить фактический размер текста.

Для высоты строки: вы должны использовать tableView: heightForRowAtIndexPath: а не rowHeight, поскольку rowHeight изменит высоту для ВСЕХ строк, а не только для одной ячейки.

Насколько прокручиваемое представление текста внутри таблицы: по моему мнению - это выглядит как дешевое решение в приложении и делает его немного любительским.

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

Что касается второго варианта: вы должны иметь возможность добавить UIScrollView в качестве подпредставления в ячейки табличного представления. Представление прокрутки может содержать полноразмерные текстовые метки и позволяет прокручивать их в ячейке фиксированного размера.

У нас есть какой-нибудь пример, как это сделать? Я новичок в iphone, извините за ошибки. - Панос 9 минут назад

UIScrollView *scroller = [[UIScrollView alloc]initWithFrame:cell.frame];
scroller.contentSize = CGSizeMake(280, 100);
UILabel *test = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 100, 20)];
test.text = @"This would be your label.";
[scroller addSubview:test];
[cell addSubview:scroller];

Это создаст UIScrollView и метку в ячейке табличной ячейки. Это будет работать, но я не думаю, что это лучшее решение, так как это будет представление прокрутки внутри представления таблицы, которое уже обеспечивает прокрутку. Мой совет - отрегулировать высоту.

Другие вопросы по тегам