4

ユーザー入力を受け取るために NSTextView ではなく NSTextField を使用していますが、フォントと textColor と行間をカスタマイズする必要があります。以下のコードを使用します。フォントと色は問題ありませんが、行間を設定する方法がわかりません。

[self.titleField setTextColor:textColor];
[self.titleField setFont:bold14];

また、問題を解決するために NSAttributedString も使用します。

NSFont *bold14 = [NSFont boldSystemFontOfSize:14.0];
NSColor *textColor = [NSColor redColor];
NSMutableParagraphStyle *textParagraph = [[NSMutableParagraphStyle alloc] init];
[textParagraph setLineSpacing:10.0];

NSDictionary *attrDic = [NSDictionary dictionaryWithObjectsAndKeys:bold14, NSFontAttributeName, textColor, NSForegroundColorAttributeName, textParagraph, NSParagraphStyleAttributeName, nil];
NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:title attributes:attrDic]; 
[self.titleField setAllowsEditingTextAttributes:YES];
[self.titleField setAttributedStringValue:attrString];

上記のコードは属性付きの文字列を表示しても問題ありませんが、テキストフィールドの文字列を削除して入力を開始すると、単語は属性なしで表示されます。

カスタムフォント、色、行間隔で NSTextField に文字列を入力するにはどうすればよいですか?

4

1 に答える 1

4

フィールド エディターに設定を送信できるため、NSTextField'sの代わりに属性設定メソッドを使用することをお勧めします。NSAttributedStringすべてのテキスト フィールドにはNSTextView(ほとんどの場合) "フィールド エディタ" があります。そして、編集を行うのはフィールド エディターです。

NSAttributedStringテキストフィールドにその1つの文字列を一時的に表示するように指示しているだけなので、固執していません。フィールド エディタがポップアップすると、テキスト フィールド (セル) は のような独自の属性を渡しますが、 の属性は渡しtextField.fontませtextField.textColorNSAttributedString

とにかく複数の行を編集しているのでNSTextView、使用できるようにan を使用するのが最善です。-setDefaultParagraphStyleパフォーマンスの問題やその他の理由でできない場合は、次のようにします。


Subclass NSTextFieldCell、それがすべてのNSTextField作業を行うため、オーバーライドします

- (NSText *)setUpFieldEditorAttributes:(NSText *)textObj

(で宣言NSCell) を使用して、フィールド エディターの属性を希望どおりに設定し、自分で-setDefaultParagraphStyle(およびフォントなどで) 行の高さの値を送信できるようにします。(textObjは設定するフィールド エディタです)。

于 2012-06-25T06:03:33.953 に答える