2017年09月14日 10:39:31 lovechris00 阅读数:2079更多
所属专栏: macOS 开发
版权声明:本文为博主原创文章,转载请附上本文链接地址。from : https://blog.csdn.net/lovechris00 https://blog.csdn.net/lovechris00/article/details/77977541
也许你也听说,cocoa 中并没有 UILable ,也没有 NSLabel。
cocoa 中的 label 实际上是 NSTextField,并将editable = NO; 来实现显示效果。这是不是和 iOS 中的UITextView 很像呢?
下面通过代码简单介绍下cocoa 中的 label 的使用。
代码默认写在一个 NSWindowController 的子类中。
创建
- (void)addLabel{
NSTextField *label0 = [[NSTextField alloc]init];
label0.editable = NO;
label0.bordered = NO; //不显示边框
label0.backgroundColor = [NSColor greenColor]; //控件背景色
label0.textColor = [NSColor magentaColor]; //文字颜色
label0.alignment = NSRightTextAlignment; //水平显示方式
label0.maximumNumberOfLines = 2; //最多显示行数
label0.frame = NSMakeRect(100, 100, 100, 100);
label0.stringValue = @"测试文字聚会就大戽水抗旱萨克的"; //现实的文字内容
label0.stringValue = @"测试";
[self.window.contentView addSubview:label0];
}
显示多行文字
使用 IB 时,修改break mode 为 wrap 模式即可;
使用代码:
正确做法:
常用分类
想要快速创建 Label,可以创建 NSTextfield 的分类 。使用 NSTextfield 初始化后,可以调用 msLabelStyle 来使field 作为label 来显示。
- (void)msLabelStyle{
self.editable = NO;
self.bordered = NO;
self.font = [NSFont systemFontOfSize:14];
self.textColor = kColor_TextBlack;
self.backgroundColor = [NSColor clearColor];
self.stringValue = @"";
}
属性字符 attributedStringValue
- (void)addAttriText{
NSString *linkURLText = @"http://www.apple.com/";
NSString *text = [NSString stringWithFormat:@"please visit %@",linkURLText];
NSURL *linkURL = [NSURL URLWithString:linkURLText];
NSRange selectedRange = [text rangeOfString:linkURLText];
NSMutableAttributedString *string = [[NSMutableAttributedString alloc]initWithString:text];
[string beginEditing];
[string addAttribute:NSLinkAttributeName
value:linkURL
range:selectedRange];
[string addAttribute:NSForegroundColorAttributeName
value:[NSColor blueColor]
range:selectedRange];
[string addAttribute:NSUnderlineStyleAttributeName
value:[NSNumber numberWithInt:NSUnderlineStyleSingle] range:selectedRange];
[string endEditing];
self.richTextLabel.attributedStringValue = string;
}