NSTextView将调整大小,但父NSScrollView不会使用setFrameSize调整大小

时间:2012-11-01 06:56:11

标签: text resize nstextview nsscrollview

首先让我说我是来自iOS世界,我正在尝试制作我的第一个OSX应用程序。如果答案显而易见,请为这个问题道歉。 :)

我正在尝试设置NSTextView以根据其中的文本量调整大小。我已成功地让NSTextView正确调整大小,但它的superview(NSScrollView)不会调整大小。

这就是我到目前为止......

[self.messageBodyTextView setVerticallyResizable:YES];

[self.messageBodyTextView.layoutManager ensureLayoutForTextContainer:self.messageBodyTextView.textContainer];
[self.messageBodyTextView.layoutManager boundingRectForGlyphRange:NSMakeRange(0, [self.messageBodyTextView.layoutManager numberOfGlyphs]) inTextContainer:self.messageBodyTextView.textContainer];

NSRect rect = [self.messageBodyTextView.layoutManager usedRectForTextContainer:self.messageBodyTextView.textContainer];

[self.messageBodyTextView.textContainer setContainerSize:rect.size];

[self.messageBodyTextView setMaxSize:NSMakeSize(self.messageBodyTextView.bounds.size.width, rect.size.height)];

[self.messageBodyTextView.textContainer setHeightTracksTextView:YES];

[self.messageBodyScrollView.documentView setFrameSize:rect.size];
[self.messageBodyScrollView.documentView setFrame:rect];
[self.messageBodyScrollView setFrameSize:rect.size];

self.messageBodyTextView使用所有这些代码调整得很好(我觉得那里有一堆冗余代码)。但是self.messageBodyScrollView根本没有调整大小,或者如果我尝试使用setBounds,那么它不仅会将messageBodyTextView的大小调整为messageBodyScrollView的完整大小,而且还会扩展内部的文本。

注意:messageBodyTextView和messageBodyScrollView都作为IBOutlets附加到我的IB文档。

我的代码曾经短得多,但这是我通过添加任何我能找到的东西来使这两个视图匹配的地方。

非常感谢任何帮助!

0 个答案:

没有答案