Mac OS X:删除标签中的文本(NSTextField)(Mac OS X: strikethrough the text in a label (NSTextField))

是否可以删除标签中的文本( NSTextField )?

我曾尝试使用字体面板,但显然当我尝试设置它们时会忽略它们:

Is it possible to strikethrough the text in a label (NSTextField)?

I have tried to use the Font Panel, but apparently these are ignored when I try to set them:

最满意答案

你可以这样做,假设_textField被设置为_textField中的插座:

- (void) awakeFromNib { NSMutableAttributedString *as = [[_textField attributedStringValue] mutableCopy]; [as addAttribute:NSStrikethroughStyleAttributeName value:(NSNumber *)kCFBooleanTrue range:NSMakeRange(0, [as length])]; [_textField setAttributedStringValue:[as autorelease]]; }

编辑:

如果您想要编写自定义删除线NSTextFieldCell子类,则唯一需要覆盖的方法是setStringValue:

- (void) setStringValue:(NSString *)aString { NSMutableAttributedString *as = [[NSMutableAttributedString alloc] initWithString:aString]; [as addAttribute:NSStrikethroughStyleAttributeName value:(NSNumber *)kCFBooleanTrue range:NSMakeRange(0, [as length])]; [self setAttributedStringValue:[as autorelease]]; }

You can do it like this, assuming _textField is set as an outlet in your xib:

- (void) awakeFromNib { NSMutableAttributedString *as = [[_textField attributedStringValue] mutableCopy]; [as addAttribute:NSStrikethroughStyleAttributeName value:(NSNumber *)kCFBooleanTrue range:NSMakeRange(0, [as length])]; [_textField setAttributedStringValue:[as autorelease]]; }

Edit:

If you want to write a custom strikethrough NSTextFieldCell subclass instead, the only method that should be necessary to override is setStringValue:

- (void) setStringValue:(NSString *)aString { NSMutableAttributedString *as = [[NSMutableAttributedString alloc] initWithString:aString]; [as addAttribute:NSStrikethroughStyleAttributeName value:(NSNumber *)kCFBooleanTrue range:NSMakeRange(0, [as length])]; [self setAttributedStringValue:[as autorelease]]; }Mac OS X:删除标签中的文本(NSTextField)(Mac OS X: strikethrough the text in a label (NSTextField))

是否可以删除标签中的文本( NSTextField )?

我曾尝试使用字体面板,但显然当我尝试设置它们时会忽略它们:

Is it possible to strikethrough the text in a label (NSTextField)?

I have tried to use the Font Panel, but apparently these are ignored when I try to set them:

最满意答案

你可以这样做,假设_textField被设置为_textField中的插座:

- (void) awakeFromNib { NSMutableAttributedString *as = [[_textField attributedStringValue] mutableCopy]; [as addAttribute:NSStrikethroughStyleAttributeName value:(NSNumber *)kCFBooleanTrue range:NSMakeRange(0, [as length])]; [_textField setAttributedStringValue:[as autorelease]]; }

编辑:

如果您想要编写自定义删除线NSTextFieldCell子类,则唯一需要覆盖的方法是setStringValue:

- (void) setStringValue:(NSString *)aString { NSMutableAttributedString *as = [[NSMutableAttributedString alloc] initWithString:aString]; [as addAttribute:NSStrikethroughStyleAttributeName value:(NSNumber *)kCFBooleanTrue range:NSMakeRange(0, [as length])]; [self setAttributedStringValue:[as autorelease]]; }

You can do it like this, assuming _textField is set as an outlet in your xib:

- (void) awakeFromNib { NSMutableAttributedString *as = [[_textField attributedStringValue] mutableCopy]; [as addAttribute:NSStrikethroughStyleAttributeName value:(NSNumber *)kCFBooleanTrue range:NSMakeRange(0, [as length])]; [_textField setAttributedStringValue:[as autorelease]]; }

Edit:

If you want to write a custom strikethrough NSTextFieldCell subclass instead, the only method that should be necessary to override is setStringValue:

- (void) setStringValue:(NSString *)aString { NSMutableAttributedString *as = [[NSMutableAttributedString alloc] initWithString:aString]; [as addAttribute:NSStrikethroughStyleAttributeName value:(NSNumber *)kCFBooleanTrue range:NSMakeRange(0, [as length])]; [self setAttributedStringValue:[as autorelease]]; }