0

スクリーンショット(Tweetie.app)のような特定の部分文字列の強調表示を実装したい場合は、NSTextFieldどのように行いますか?: )Tweetieリンクハイライトhttp://qkpic.com/88c61

ご協力いただきありがとうございます!

4

2 に答える 2

6

NSTextField の場合、描画を行うのは NSTextFieldCell であることに注意してください。-drawInteriorWithFrame:inView: をオーバーライドして、文字列の描画を自分で行う必要があります。課題は、部分文字列が描画される四角形 (範囲がラップされている場合は複数) を見つけることです。NSLayoutManager と NSTextStorage コンテナを使用する必要があります。

NSTextView を使用するのが最適です。関連する NSLayoutManager および NSTextStorage コンポーネントはすでに事前に組み立てられており、他の多くの機能を無料で利用できます。最も重要なのは、便利な -[NSTextView drawViewBackgroundInRect:] メソッドがあるため、何もサブクラス化する必要がないことです。テキスト ビューにレイアウト マネージャーとテキスト ストレージを要求し、指定された範囲の四角形を要求するだけです。詳細については、テキスト システムの概要とリンクされたドキュメントを参照してください。

興味深い部分文字列を効率的に見つけるには、興味深い範囲にカスタム属性(または NSLinkAttributeName などの組み込み属性) を使用できます。

于 2009-11-22T01:37:53.437 に答える
0

考慮すべき代替手段は、CSS を使用してカスタム属性を構築できる編集可能な WebView です。

于 2009-11-22T14:39:24.840 に答える