2013-09-21 2 views
14

Когда я тестирую свое приложение на симуляторе IOS7. Иногда я обнаружил, что это странно, когда я использую sizeToFitUITextView. Кадр после sizeToFit кажется правильным, но текст может отображаться только частично, как на фотографии ниже. (Серая область представляет UITextView новый кадр после sizeToFit, целое предложение должно быть «который вызвал напряженные отношения между ними.»)Странная вещь возникает при использовании sizetofit UITextView в IOS7

enter image description here

UITextView текст устанавливается через attributedText. Кажется, что проблема возникает только с некоторыми предложениями и подходит для большинства предложений.

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

Update:

Наконец я решить проблему в уродливом виде. Я возвращаю текст textView.

NSString *text = textView.text; 
textView.text = @""; 
textView.text = text; 

Теперь он может отображать весь контент после sizeToFit. Я думаю, что это похоже на ошибку IOS 7.

+1

Увеличьте высоту кадра Textview. – Romance

+0

Я уже установил backGroundColor UITextView в серый цвет. (серая область фотографии выше). Высота кадра Textview достаточно, чтобы показать весь текст. – echo

+0

Возможно [textView setNeedDisplay]? –

ответ

0

У вас есть «подвид клипов» в интерфейсе?

Снимите флажок или установите для этого свойства значение «НЕТ».

+0

Я создаю UITextView путем кодирования и не используется построитель интерфейсов. Я также не могу найти свойство clipSubviews. Можете ли вы дать мне несколько советов? – echo

+0

это можно сделать в коде, установив 'clipsToBounds = NO', но это, похоже, не решает проблему. – alexshafran

+0

это не помогло решить проблему –

2

Заметили в IOS7 sizeToFit не работает также - возможно, решение может помочь вам тоже нужна дополнительная layoutIfNeeded

[UITEXTVIEW sizeToFit]; 
[UITEXTVIEW layoutIfNeeded]; 
[UITEXTVIEW setTextContainerInset:UIEdgeInsetsMake(0, 0, 0, 0)]; 
18

У меня была та же проблема, что мне потребовалось некоторое время, чтобы понять это, вы просто нужно изменить размер текстовый контейнер

[textview sizeToFit]; 
[textview.textContainer setSize:textview.frame.size]; 
+0

Большое спасибо! Я потратил три часа на это. – amb

+0

Великая находка, спасла меня много времени. – zimmryan

+0

Удивительное спасибо! – codepushr

0

Попробуйте это работает для меня.

[textView setTextContainerInset:UIEdgeInsetsMake(0, 0, 0, 0)]; 
Смежные вопросы