您的位置:首页 > 移动开发 > IOS开发

iOS到Mac OS之自定义Label

2016-04-22 17:28 381 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: