• oc之NSTextField


    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 模式即可;

    pastedGraphic.png

    使用代码:

    正确做法:

    常用分类

    想要快速创建 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;

    }

  • 相关阅读:
    比较全的JS checkbox全选、取消全选、删除功能代码
    JS下高效拼装字符串的几种方法比较与测试代码
    jQuery操作 input type=checkbox的实现代码
    禁用和选中所有页面上的复选框。
    jquery实现radio按纽全不选和checkbox全选的实例
    Javascript的四种继承方式
    javascript绑定时间 含(IE)
    input中如何输入逆写的中文句子
    清除浮动
    关于iOS9中的App Transport Security相关说明及适配(转)
  • 原文地址:https://www.cnblogs.com/sundaymac/p/10329649.html
Copyright © 2020-2023  润新知