最初に、私は iOS の世界から来て、最初の OSX アプリを作ろうとしていると言わせてください。答えが明らかな場合は、質問をお詫びします。:)
テキストの量に応じてサイズを変更するように NSTextView をセットアップしようとしています。NSTextView のサイズを適切に変更することに成功しましたが、スーパービュー (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 ドキュメントに添付されています。
私のコードは以前はずっと短かったのですが、これら 2 つのビューを一致させるために見つけたものを何でも追加することで、ここにたどり着きました。
どんな助けでも大歓迎です!