2012-01-28 14 views
2

NSWindowを自動化できるようにしようとしています。私はUIアイテムのサイズを変更することがほとんどですが、問題を引き起こす残りのオブジェクトのうちの1つはNSTextViewです。実際、NSTextViewがサイズ変更されたら新しいフォントサイズを計算する方法が見つかりません。NSTextViewの自動サイズ調整とそのフォントサイズ

NSTextFieldの場合、テキストの長さに基づいてフォントサイズを見つける方法を見つけました。明らかに、複数行のテキストコンテナには(私が見つからない限り)同等のメソッドはないようです。ソートの何かをmentionned私が見つけた

唯一の実際の場所はここにある:私はできないエラーがあるように思われるようhttp://boutcher.tumblr.com/post/7842216960/nstextview-auto-resizing-text

しかし、私は、自分のアプリケーションにこのコードを実装することができませんでしたNSLayoutManagerが作成される方法で修正してください。

過去にこれを行った人はいますか?私はちょうどにサイズを変更することをユーザーに許可することを検討しています。は1つのサイズなので、フォントサイズをハードコードできます。これらのNSTextViewsを扱うのは本当に苦痛です!

答えて

1

は中sizeWithAttributes:方法を参照してください「NSStringのアプリケーションキットの追加リファレンス」を

それはあなたがのTextViewの現在frame.sizeに比較することができNSSizeを返します。

"Attributes" argでは、NSFontをオブジェクトとして、NSFontAttributeNameをキーとしてNSDictionaryを作成します。 (文字列のキーのように見えますが、フォント自体のキーです)

文字列を文字列から取得します。[[yourTextView textStorage] string]。 使用しているフォントのfamilyNameと現在のポイントサイズであるCGFloatを取得します。コンストラクタ[NSFont fontWithName:familyName size:floatChanged]を使用してテストするフォントを作成します。

正しいサイズのフォントになったら、古い文字列から新しいNSAttributedStringを作成します。上に作った "属性"辞書(正しいサイズを生成したもの)を使って、それをNSAttributedStringのinitWithString:attributesコンストラクタに渡してください。

属性文字列をtextStorage(NSMutableAttributedStringのサブクラス)に割り当てます。[[yourTextView textStorage] setAttributedString:thatYouJustMade]

注:textviewで下線や前景色、背景色、斜体/太字フォントなどの属性を使用する場合は、その情報をtextStorageから取得し、新しい属性付き文字列に組み込む必要があります。それは可能です。 NSAttributedStringとNSMutableAttributedStringのクラスrefを見てください。

+0

私は別の方法をとることに決めましたが、あなたのソリューションはとても正確です! – elliottbolzan

関連する問題