2013-10-02 4 views
0

Я пытаюсь настроить пользовательский интерфейс обмена сообщениями, подобный тому, который используется в iOS7, используя UICollectionView (чтобы воспользоваться подклассом UICollectionViewFlowLayout с помощью UIDynamics). Учитывая NSString, мне нужно вычислить необходимый размер для UITextView, чтобы текст не был разрезан. Я пробовал sizeWithAttributes: и метод Core Text CTFramesetterSuggestFrameSizeWithConstraints, но оба они дают меньшую высоту, чем должны. Я также попытался использовать скрытый текстовый вид для вычисления фрейма, но относительно дорогому заполнению textView для каждого сообщения. Я установил тестовый проект here. Любая идея, что мне может не хватать? Спасибо!Вычислить требуемый размер для UITextView

ответ

4

Try конвертирования NSString к NSAttrbutedString и использование:

- (CGRect)boundingRectWithSize:options:context:;

Вы также захотите устранить кросс-вставки из вашего UITextView, используя эти три:

textView.contentInset = UIEdgeInsetsZero; 
[textView setTextContainerInset:UIEdgeInsetsZero]; 
[textView.textContainer setLineFragmentPadding:0]; 
+0

Спасибо! Отлично работает, и на самом деле '[textView setTextContainerInset: UIEdgeInsetsZero];' достаточно, чтобы исправить проблему размера, которую я имел. – axelcdv

+0

Да, я переполняю его, потому что это такой новый API. – jaredsinclair

0

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

Dynamic Heights for textviews

+0

Спасибо! Ну, я использую autolayout, который в основном работает очень хорошо, но в этом случае я не могу избежать использования ограничения фиксированной ширины, которое я должен вычислить в зависимости от размера текста ... Но я посмотрю на ваша ссылка, посмотрите, работает ли она – axelcdv

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