macOS 开发 - Label


也许你也听说,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;
}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI工程化

请我喝杯伯爵奶茶~!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值