2013-05-30 2 views
4

У меня есть подкласс UITableViewCell, содержащий UITextView, где прокрутка отключена. Я поставил свой кадр, как это, в моей таблице вида клетки метода layoutSubviews:UITextView текст отключен, когда имеется большое количество текста

CGRect frame = self.bodyTextView.frame; 
    CGSize size = self.bodyTextView.contentSize; 
    frame.size = size; 
    self.bodyTextView.frame = frame; 

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

enter image description here

Рама правильный размер на основе текста (в данном случае 1019 точек), но текст останавливается перед в нижней части текстового вида. Я также видел, как текст обрезается частично через линию (т. Е. Текст последней видимой строки текста обрезается на полпути по горизонтали). Кто-нибудь знает, что здесь происходит?

Несколько моментов:

  • Текст вид хорошо работает для всех моих просмотра таблицы элементов с коротким содержанием.
  • Если я увеличиваю количество текста в случае, показанном выше, высота текстового вида увеличивается, но текст остается отрезанным в одном и том же месте.
+0

Вы увеличиваете высоту ячейки также от имени размера контента? –

+0

Да, высота ячейки задана в методе heightitudeRreeAtIndexPath класса представления таблиц и задает правильную высоту для ячейки представления таблицы. – Darren

ответ

4

Согласно this и подобным ответам, проблема может быть, что «правильный contentSize доступен только после того, как UITextView было добавлено к мнению ... До этого она равна frame.size»

Я бы предложил вам рассчитать высоту по-другому, например -sizeWithFont: или -sizeTofit

+0

Спасибо за ссылку.Это интересно, но мой кадр уже кажется правильным, это просто текст, который почему-то обрывается. Я сам пытался вычислить высоту кадра и использовал sizeToFit, но они не имели никакого эффекта. – Darren

+0

Мне очень жаль, я не понял эту проблему. Так что изменение размера рамки uitextview, похоже, не влияет на новую рисование содержимого в большем пространстве. У вас уже был взгляд на этот [вопрос?] (Http://stackoverflow.com/questions/16301147/why-uitextview-draws-text-in-bad-frame-after-resizing) – dimuz

+0

Это привело меня к моему ответу : Я забыл называть [super layoutSubviews], когда я переопределял его в классе ячеек таблицы ... sigh ... – Darren

1

Используйте это, чтобы получить TextSize

// find the text width; so that btn width can be calculate 
CGSize textSize = [@"YOUR TEXT" sizeWithFont:[UIFont fontWithName:@"Arial" size:20.0] 
           constrainedToSize:CGSizeMake(320.0f, 99999.0f) 
            lineBreakMode:UILineBreakModeWordWrap]; 

, а затем установить высоту, используя это как:

CGRect frame = self.bodyTextView.frame; 

frame.size = textSize; 
self.bodyTextView.frame = frame; 

Надеется, что это помогает.

+0

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

+0

Вы создали свой текстовый просмотр программно или через NIB? –

+0

Это в моем подклассе UITableViewCell xib. – Darren

Смежные вопросы