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]]; }更多推荐
发布评论