Пользовательская ячейка таблицы 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 и метку в ячейке табличной ячейки. Это будет работать, но я не думаю, что это лучшее решение, так как это будет представление прокрутки внутри представления таблицы, которое уже обеспечивает прокрутку. Мой совет - отрегулировать высоту.