Во-первых, у вас нет для подкласса NSTextFieldCell
, чтобы достичь этого, поскольку подкласс NSCell
, NSTextFieldCell
наследует -setAttributedStringValue:
. Предоставленная вами строка может быть представлена как NSAttributedString
. Следующий код иллюстрирует, как вы можете достичь желаемого текста с помощью обычного NSTextField
.
MDAppController.h:
@interface MDAppController : NSObject <NSApplicationDelegate> {
IBOutlet NSWindow *window;
IBOutlet NSTextField *textField;
}
@end
MDAppController.m:
@implementation MDAppController
static NSDictionary *regularAttributes = nil;
static NSDictionary *boldAttributes = nil;
static NSDictionary *italicAttributes = nil;
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
if (regularAttributes == nil) {
regularAttributes = [[NSDictionary dictionaryWithObjectsAndKeys:
[NSFont systemFontOfSize:[NSFont systemFontSize]],NSFontAttributeName,
nil] retain];
boldAttributes = [[NSDictionary dictionaryWithObjectsAndKeys:
[NSFont boldSystemFontOfSize:[NSFont systemFontSize]],NSFontAttributeName,
nil] retain];
NSFont *regFont = [NSFont userFontOfSize:[NSFont systemFontSize]];
NSFontManager *fontManager = [NSFontManager sharedFontManager];
NSFont *oblique = [fontManager convertFont:regFont
toHaveTrait:NSItalicFontMask];
italicAttributes = [[NSDictionary dictionaryWithObjectsAndKeys:
oblique,NSFontAttributeName, nil] retain];
}
NSString *string = @"Line 1: Title\nLine 2: Description";
NSMutableAttributedString *rString =
[[[NSMutableAttributedString alloc] initWithString:string] autorelease];
[rString addAttributes:regularAttributes
range:[string rangeOfString:@"Line 1: "]];
[rString addAttributes:regularAttributes
range:[string rangeOfString:@"Line 2: "]];
[rString addAttributes:boldAttributes
range:[string rangeOfString:@"Title"]];
[rString addAttributes:italicAttributes
range:[string rangeOfString:@"Description"]];
[textField setAttributedStringValue:rString];
}
@end
Это приводит к следующему:
Теперь, в зависимости от того, как вы собираетесь использовать этот текст, вы можете реализовать дизайн несколькими различными способами. Возможно, вы захотите выяснить, может ли NSTextView
работать на вас, а не NSTextField
...