2014-02-19 4 views
3

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

- (CGSize)intrinsicContentSize 
{ 
    return [[self layoutManager] usedRectForTextContainer:[self textContainer]].size; 
} 

Это работает, за исключением начального вызова, где он возвращает (0,0) для размера.

Если я вызываю [self setNeedsLayout:YES] на мой взгляд после создания текстового представления и аннулирования размера содержимого текстового вида в -layout, он вернет правильный размер для нового пустого текстового представления.

Есть ли способ иметь -intrinsicContentSize вернуть правильный размер для моего нового текстового вида без обновления макета моего представления?

+0

Вызов 'invalidateIntrinsicContentSize'? – matt

+0

Кстати, обычный способ сделать текстовое представление растет с его содержанием - это посмотреть на его 'contentSize', который поддерживается для вас автоматически .... – matt

+0

@matt Вот что я делаю в -layout, который работает но я не понимаю, почему я должен это делать в первый раз. Я отклоняю размер содержимого при изменении текста, который работает нормально. –

ответ

0

Посмотрите на this thread, где Александр Стаубо делится слегка скорректированной версией вашего кода. Это работает для меня.

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