Mac OS中没有像iOS一样的UILabel。
一般我们可以用cell去显示一段文字,或者用textfield,或者直接draw。几种方式都是可行的。
这里提供了一个自定义的label。
里面用到了CATextlayer这个类去做的;CATextlayer的属性和方法可以通过API去查看;
使用CATextLayer需要,#import <QuartzCore/QuartzCore.h>
这个东西可以在iOS中使用,也可以在Mac OS中使用,还是很方便的。
CATextLayer *layer = [CATextLayer layer]; //初始化
layer.string = @"dasfasa"; //设置文字
layer.frame = CGRectMake(0, 0, 320, 20); //设置frame
layer.font = (__bridge CFTypeRef)((NSString *)fontName); //设置字体
layer.fontSize = 10.0f; //设置字体大小
layer.alignmentMode = kCAAlignmentCenter; //字体的对齐方式
layer.foregroundColor =[NSColor redColor].CGColor; //字体的颜色
layer.wrapped = YES; //设置文字是不是只限制在frame中
layer.contentsScale = 2.0; //2不模糊
[someview.layer addSublayer:lary];
CATextLayer的优势在于,它的string属性是id类型的,可以直接赋NSAttributedString类型的值。
有一点需要注意的是:::Mac OS中使用CATextLayer时,需要先设置someview.wantsLayer = YES;否则加载不出来。
NSAttributedString,利用这个类,我们可以让一个label呈现出不同颜色的文字,还可以设置行间距,字间距等。
下面列举简单的用法,其他大同小异。
_attributeString = [[NSMutableAttributedString alloc] initWithString:_text];
//文字颜色
[_attributeString addAttribute:(NSString *)kCTForegroundColorAttributeName
value:(id)[NSColor redColor].CGColor
range:NSMakeRange(0, _text.length-1)];
//字体-字体大小
[_attributeString addAttribute:(NSString *)kCTFontAttributeName
value:[NSFont systemFontOfSize:10.0f]
range:NSMakeRange(0, _text.length-1)];
这里奉上一个简单的LabelDemo:
点击下载LabelDemo