2014-02-19 1 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

Alexander Staubo가 약간 조정 된 코드 버전을 공유하는 this thread을 살펴보십시오. 이것은 나를 위해 작동합니다.