【IOS开发基础系列】UILabel专题

主要参考链接:

iOS学习5:UILabel的使用

http://bbs.9ria.com/thread-244444-1-1.html

一、初始化

UILabel *myLabel = [[UILabel alloc] initWithFrame: CGRectMake(40, 40, 120, 44)];

[self.view addSubview: myLabel]; 


二、设置文字 

①、设置默认文本 

NSString *text = @"标签文本";

myLabel.text= text;

效果:


②、设置标签文本(此属性是iOS6.0之后才出现,如若不是必要,不建议使用此属性) 

NSString *text = @"其实没什么";

NSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString: text];

[attributeString setAttributes: @{NSForegroundColorAttributeName : [UIColor redColor],      NSFontAttributeName : [UIFont systemFontOfSize: 17]} range: NSMakeRange(2, 1)];

myLabel.attributedText = attributeString;

效果:

关键字标红的效果

NSString *keyword = @"开源";

NSString *result = @"开源中国社区";

// 设置标签文字

NSMutableAttributedString *attrituteString = [[NSMutableAttributedString alloc] initWithString: result];

// 获取标红的位置和长度

NSRange range = [result rangeOfString: keyword];

// 设置标签文字的属性

[attrituteString setAttributes: @{NSForegroundColorAttributeName : [UIColor redColor],  NSFontAttributeName :  [UIFont systemFontOfSize: 17]} range: range];

// 显示在Label上

label.attributedText = attrituteString;


③、设置字体,如果是使用②中的文本,那在设置AttributeString的属性时已经设置过Font了和textColor了,直接使用①设置文本时设置文本时,设置字体方法

myLabel.font = [UIFont systemFontOfSize:13];


④、设置颜色

myLabel.textColor = [UIColor blueColor];


⑤、设置对齐方式

myLabel.textAlignment = NSTextAlignmentCenter;    //居中

    NSTextAlignmentLeft    //左对齐

    NSTextAlignmentCenter    //居中

    NSTextAlignmentRight      //右对齐

    NSTextAlignmentJustified    //最后一行自然对齐

    NSTextAlignmentNatural     //默认对齐脚本

        NSTextAlignmentJustified和 NSTextAlignmentNatural用的时候会报错,程序崩溃,暂时不知道什么时候可以使用,希望知道的指教一下,感激不尽。  

⑥、文字剪裁方式

    NSLineBreakByWordWrapping = 0,//以空格为边界,保留单词

    NSLineBreakByCharWrapping,   //保留整个字符

    NSLineBreakByClipping,       //简单剪裁,到边界为止

    NSLineBreakByTruncatingHead,  //按照"……文字"显示

    NSLineBreakByTruncatingTail,  //按照"文字……文字"显示

    NSLineBreakByTruncatingMiddle    //按照"文字……"显示


myLabel.lineBreakMode= NSLineBreakByTruncatingHead;


⑦、设置Label enabled属性  

    如果设置为No,则文字颜色会变暗,表明其是不可用的,默认值为YES。 

myLabel.enabled= NO;


三、匹配Label上的文字 

①、是否根据文本宽度改变字体大小 

myLabel.adjustsFontSizeToFitWidth = YES;

//假设文字内容为@"曾在月光之下望烟花,曾共看夕阳渐降下",Label长度为200,则一行显示不下,若设置此属性为YES,则会降低字体大小,以显示全部内容。

    前后对比:

②、改变字母之间的间距来适应label大小

//当这个属性是YES,标签可能改变标签文本的字母间距,以使该文本更适合标签的边界内。此属性的字符串,而不管当前行的行的裁剪模式。该属性的默认值是NO。

myLabel.adjustsLetterSpacingToFitWidth= NO;

//个人使用了一下,没发现有什么区别,不知道具体是什么时候发挥作用。


③、设置对齐基线

myLabel.adjustsFontSizeToFitWidth = YES;    //调整基线位置需将此属性设置为YES

myLabel.baselineAdjustment = UIBaselineAdjustmentAlignBaselines;


此属性有三个值可选

    1. UIBaselineAdjustmentAlignBaselines    //文本最上端与Label中线对齐,默认值

    2. UIBaselineAdjustmentAlignCenters  //文本中线与Label中线对齐

    3. UIBaselineAdjustmentNone       //文本最下端与Label中线对齐


④、最小字体大小,当字体小于这个最小值时无效,显示此属性值  iOS6.0之前:minimumFontSize iOS6.0之后:minimumScaleFactor

myLabel.minimumScaleFactor = 10.0;    //默认值为0,为当前字体大小


⑤、行数 

myLabel.numberOfLines = 2;    //Label行数


⑥、高亮

myLabel.highlighted = YES;    //是否高亮

myLabel.highlightedTextColor = [UIColor redColor];    //高亮颜色;此属性在设置按钮的titleLabel时,无论highlighted是YES还是NO,在按钮按下时标题都显示此高亮颜色


⑦、阴影

myLabel.shadowColor = [UIColor grayColor];    //阴影颜色,默认为nil

myLabel.shadowOffset = CGSizeMake(1, 1);    //阴影的偏移点


四、Label位置 

①、计算UIlabel 随字体多行后的高度

CGRect result, bounds;

bounds = CGRectMake(0, 0,200, 300);

//计算20行后的Label的Frame

heightLabel = [myLabel textRectForBounds: bounds limitedToNumberOfLines: 20];    


NSLog(@"%f", heightLabel.size.height);


②、绘制text到指定区域

- (void) drawTextInRect: (CGRect)rect

//需要重载此方法,然后由子类调用,重写时调用super可以按默认图形属性绘制,若自己完全重写绘制函数,就不用调用super了


五、UILabel自适应高度和自动换行

//初始化label  

UILabel *label = [[UILabel alloc] initWithFrame: CGRectMake(0,0,0,0)];  

//设置自动行数与字符换行  

[label setNumberOfLines: 0];  

label.lineBreakMode = UILineBreakModeWordWrap;   

// 测试字串  

 NSString *s = @"这是一个测试!!!adsfsaf时发生发勿忘我勿忘我勿忘我勿忘我勿忘我阿阿阿阿阿阿阿阿阿阿阿阿阿啊00000000阿什顿。。。";  

UIFont *font = [UIFont fontWithName: @"Arial" size:12];  

//设置一个行高上限  

CGSize size = CGSizeMake(320, 2000);  

//计算实际frame大小,并将label的frame变成实际大小  

 CGSize labelsize = [s sizeWithFont: font constrainedToSize: size lineBreakMode: UILineBreakModeWordWrap];  

[label setFrame: CGRectMake:(0, 0, labelsize.width, labelsize.height)];


六、参考链接

一文让你彻底了解iOS字体相关知识

http://ios.jobbole.com/83939/?utm_source=tuicool&utm_medium=referral


UILabel自适应高度和自动换行

http://blog.csdn.net/csj1987/article/details/6662852

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容