5

ボタンとテキストビューを含むビューがあります。ボタンをクリックすると、テキストビューの非表示ステータスが変更され、ビューに表示されます。スプリングとストラットが構成されているため、テキストビューはビューと共に垂直方向に拡張されます。これはすべてIBで行われます

次に、プログラムでテキストビューにテキストを挿入しますが、ユーザーがスクロールしなくてもすべてのコンテンツを表示するには、テキストビューが必要です。

これは、テキストビュー内のテキストの高さを計算するために使用するコードです:

- (float) getTextViewHeight {

    //based on http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/TextLayout/Tasks/StringHeight.html%23//apple_ref/doc/uid/20001809-CJBGBIBB

    [textview.textContainer setLineFragmentPadding:0.0];
    [textview.layoutManager glyphRangeForTextContainer:textview.textContainer]; 

    return [textview.layoutManager usedRectForTextContainer:self.interactionData.textContainer].size.height;    
}

textview での -sizeToFit の呼び出しの有無にかかわらず、大きすぎるか小さすぎます (内容によって異なります)。

ビューのサイズを調整できるように、すべてのコンテンツが表示されたテキストビューの高さを取得する必要があります。

おそらくNSTextFieldをラベルとして使用できることはわかっていますが、追加機能のためにNSTextViewが必要です(特に、スクロールビューのルーラービューを使用して)。

誰か提案はありますか?

4

3 に答える 3

2

NSTextViewは通常、文字列がコンテナの幅を超えた場合にサイズを変更します。これは、含まれているセルに、「行の折り返し」などと呼ばれる、テキストのオーバーランに対するデフォルトの動作があるためだと思います。私の直感では、レイアウトマネージャーを必要とせずに、ロード後にTextViewに高さを要求し、それに応じて含まれるビューを調整することができます。そして、明らかに自動サイズ変更マスクが設定されていることを確認してください(ああ、これはIBで行っているので、心配する必要はありません)。私は間違っている可能性があり、私はテストをしませんでした...しかし、ええ、あなたはそれを試すことができます!:P

于 2011-03-30T00:21:12.937 に答える
2

彼女は私がそれを行う方法であり、うまく機能します:

// Help text.
NSBundle* mainBundle = [NSBundle mainBundle];
NSString* path = [mainBundle pathForResource: @"category-analysis-help" ofType: @"rtf"];
NSAttributedString* text = [[NSAttributedString alloc] initWithPath: path documentAttributes: NULL];
[helpText setAttributedStringValue: text];
NSRect bounds = [text boundingRectWithSize: NSMakeSize(helpText.bounds.size.width, 0) options: NSStringDrawingUsesLineFragmentOrigin];
helpContentView.frame = NSMakeRect(0, 0, helpText.bounds.size.width + 20, bounds.size.height + 20);

helpContentView は、テキストの周りに余白を追加するための helpText のコンテナです。helpText はそのコンテナーに合わせてサイズ変更されます。

高さは行に何が収まるかによって決まるため、正しい高さを得るには固定幅が必要であることは明らかです。

于 2013-04-26T15:01:50.280 に答える
-1

スクロール ビューを完全に省略したい場合 (たとえば、別のスーパービューにアタッチされ、そのテキストに合わせてサイズを変更するテキスト ビューを作成する場合)、NSText を参照してください。AFAICT、基本的にはスーパービュー(スクロールビューパーツ)のないNSTextViewであり、自動的にサイズを変更できます。

于 2011-03-29T07:06:52.507 に答える