iOS到Mac OS之自定义Label

来源:互联网 发布:中国象棋算法 编辑:程序博客网 时间:2024/06/10 11:08

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);//设置framelayer.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



1 0
原创粉丝点击