gpt4 book ai didi

objective-c - 具有多行的 NSTextFieldCell

转载 作者:太空狗 更新时间:2023-10-30 03:42:04 35 4
gpt4 key购买 nike

我需要显示一个多行的 NSTextFieldCell,每行格式不同。

是这样的:

第 1 行:标题
第 2 行:描述

我对 NSTextFieldCell 进行了子类化,但我不知道如何继续使用它。

有什么想法吗?

最佳答案

首先,您不必继承 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

结果如下:

enter image description here

现在,根据您打算如何使用此文本,您可以通过几种不同的方式实现设计。您可能想查看 NSTextView 是否适合您而不是 NSTextField...

关于objective-c - 具有多行的 NSTextFieldCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6552682/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com