1

最初に、私は 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 つのビューを一致させるために見つけたものを何でも追加することで、ここにたどり着きました。

どんな助けでも大歓迎です!

4

0 に答える 0