2012-05-16 2 views
1

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

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

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

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

+0

Предполагается, что это произойдет программно? Также, как работает ярлык? Ограничена ли она шириной? Сначала немного больше информации. – Martol1ni

+0

Спасибо за быстрый ответ. Да, я создаю пользовательскую ячейку программно. На данный момент я установил высоту строки до 88, а в ячейке у меня есть contentLabel = [[UILabel alloc] initWithFrame: CGRectMake (10, 35, 340, 44)]; contentLabel.tag = 2; contentLabel.font = [UIFont systemFontOfSize: 15]; contentLabel.textAlignment = UITextAlignmentLeft; contentLabel.lineBreakMode = UILineBreakModeWordWrap; contentLabel.numberOfLines = 0; contentLabel.text = contentText; [cell.contentView addSubview: contentLabel]; Он отлично разбирает линии, но если текст еще длиннее, он не отображается. – Panos

+0

Пожалуйста, обновите свое оригинальное сообщение, чтобы код отображался .. – Martol1ni

ответ

1

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

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

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

1

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

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

+0

Есть ли у нас какой-нибудь пример того, как это сделать? Im новый для iphone, извините за прослушивание. – Panos

+0

Вам нужно научиться 2 вещам: 1) как использовать UIScrollView. (в частности, установка кадра и содержимого). 2) как создать пользовательскую ячейку представления таблицы (с подзонами). Затем поместите все это вместе, добавив представление прокрутки в качестве подсмотра в пользовательских ячейках.На этом сайте есть много кода, а другие показывают вам, как выполнять эти индивидуальные задачи, так что удачи! – Dima

1

Есть ли у нас какой-нибудь пример того, как это сделать? Im новый для iphone, извините за прослушивание. - Panos 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 и метку в TableCell 'клетки'. Это будет работать, но я не думаю, что это лучшее решение, так как это будет scrollview внутри tableview, который уже обеспечивает прокрутку. Мой совет - настроить раскладку.