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];
}
func addRichableLabel(){
let text = NSString(string: "please visit http//www.apple.com/")
let attributedString = NSMutableAttributedString(string:text as String)
let linkURLText = "http://www.apple.com/"
let linkURL = NSURL(string: linkURLText)
//查找字符窜范围
let selectedRange = text.range(of: linkURLText)
attributedString.beginEditing()
//设置连接属性
// attributedString.addAttributes([NSAttributedString.Key.link : linkURL as Any], range: selectedRange)
attributedString.addAttribute(NSAttributedString.Key.link, value: linkURL as Any, range: selectedRange)
//设置文件颜色
attributedString.addAttribute(NSAttributedString.Key.foregroundColor, value: NSColor.blue, range: selectedRange)
//设置文本下画线
attributedString.addAttribute(NSAttributedString.Key.underlineStyle, value: NSUnderlineStyle.single.rawValue, range: selectedRange)
attributedString.endEditing()
let frame = CGRect(x: 50, y: 50, 280, height: 80)
let rechTextLabel = NSTextField(frame: frame)
rechTextLabel.isEditable = false
rechTextLabel.isBezeled = false
rechTextLabel.drawsBackground = false
rechTextLabel.attributedStringValue = attributedString
self.view.addSubview(rechTextLabel)
}
显示多行文字
使用 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;
}