UILabel类的刨析

对于一个标签的UILabel类的属性,方法的详解。
首先初始化一个labelOne对象的两种方法:

//先初始化对象,然后在需要的时候设定labelOne在父视图上的位置和大小
UILabel * labelOne = [[UILabel alloc]init];
//UILabel * labelOne = [UILabel new];同样是初始化一个labelOne对象
[labelOne setFrame:CGRectMake(100, 100, 300, 100)];
//直接在初始化的时候设定labelOne在父视图上的位置和大小
UILabel * labelOne = [[UILabel alloc]initWithFrame:CGRectMake(100, 100, 300, 100)];

设置labelOne的文字(包括文字的颜色、大小和文字的对齐方式)

labelOne.text = @"这是一个标签";

//如果不设置文字颜色,则系统默认颜色为黑色
labelOne.textColor = [UIColor blackColor];

//如果不设置文字大小,则系统默认大小为17
labelOne.font = [UIFont systemFontOfSize:17];

//NSTextAlignmentLeft当前的文本相对于labelOne的frame是左对齐
//NSTextAlignmentCenter当前的文本相对于labelOne的frame是居中 
//NSTextAlignmentRight当前的文本相对于labelOne的frame是右对齐
//NSTextAlignmentJustified最后一行自然对齐
//NSTextAlignmentNatural默认对齐脚本

labelOne.textAlignment = NSTextAlignmentLeft;

设置labelOne文本超出labelOne的size时文本的显示方式:

labelOne.lineBreakMode = NSLineBreakByWordWrapping;
NSLineBreakByWordWrapping,    //以空格为边界,保留单词(默认设置)
NSLineBreakByCharWrapping,    //保留字符(包括空格)
NSLineBreakByClipping,        //简单剪裁,到边界为止
NSLineBreakByTruncatingHead,  //按照"……标签"显示
NSLineBreakByTruncatingTail,  //按照"我……签"显示
NSLineBreakByTruncatingMiddle //按照"我是……"显示

前三个类型这样说不太形象,但是当它和numberOfLines属性一起用的时候就可以很明显的看出来:

labelOne.numberOfLines = 0;
//默认是1,当设置成0的时候如果文本长度超出labelOne的宽度且高度够的情况下会自动换行
labelOne.lineBreakMode = NSLineBreakByWordWrapping;
NSLineBreakByWordWrapping,    
//如果高度够的话,则会根据宽度和文本中单词的长度来决定一行放几个完整的单词,超出的部分则换行
NSLineBreakByCharWrapping,
//和第一个类似,不过是改成按照每一个字符来计算,也就是说在换行的时候不会自动保留完整的单词,有可能会将其拆开
NSLineBreakByClipping,
//目前亲测和第一个好像没有什么区别

设置labelOne文本的前景色和投影

//首先设置labelOne是否开启高亮状态,也就是前景色
labelOne.highlighted = YES;
//设置labelOne的前景色
labelOne.highlightedTextColor = [UIColor redColor];
//设置labelOne的投影的颜色
labelOne.shadowColor = [UIColor blueColor];
//设置labelOne的投影位置,也就是投影的偏移量
labelOne.shadowOffset = CGSizeMake(0, 30);

设置labelOne的其他属性

//设置labelOne不可以编辑,本身labelOne在运行之后是不能被编辑的,这里设置这个属性为NO的时候labelOne的文本颜色会变成浅色。
labelOne.enabled = NO;
//设置labelOne是否可以交互,当设置为YES的时候,为labelOne添加手势之后就会响应手势的事件,默认是NO。
labelOne.userInteractionEnabled = YES;
//设置labelOne的文本最小的字体大小,当小于这个值的时候,会将字体大小设置为这个最小值。
labelOne.minimumScaleFactor = 17;
//自动调节labelOne的文本字体大小来适应labelOne的宽度,默认为NO。
labelOne.adjustsFontSizeToFitWidth = YES;
//微调文本的位置,有三个类型,默认是文本最上端与Label中线对齐。
labelOne.baselineAdjustment = UIBaselineAdjustmentAlignBaselines;
UIBaselineAdjustmentAlignBaselines //文本最上端与Label中线对齐,默认值
UIBaselineAdjustmentAlignCenters   //文本中线与Label中线对齐
UIBaselineAdjustmentNone           //文本最下端与Label中线对齐
//计算在指定的范围内的labelOne显示当前行的文本的frame 第一个参数是指定的范围,第二个参数是labelOne限制多少行,亲测之后发现,目前第二个参数暂时不知道用意在什么地方,无论设置多少行,计算出来的结果只和指定的范围有关系。
//labelOne textRectForBounds:labelOne.bounds limitedToNumberOfLines:2
NSLog(@"%@",NSStringFromCGRect([labelOne textRectForBounds:labelOne.bounds limitedToNumberOfLines:2]));
//在绘图的时候,将labelOne的文本绘制到指定的范围。
- (void)drawTextInRect:(CGRect)rect

设置labelOne的边框和圆角

//设置labelOne的边框宽度
labelOne.layer.borderWidth = 1;
//设置labelOne的边框颜色
labelOne.layer.borderColor = [UIColor lightGrayColor].CGColor;
//设置labelOne的圆角半径
labelOne.layer.cornerRadius = 5;
//设置完圆角半径之后需要对labelOne进行剪裁,把超出的部分剪裁掉才能显示圆角的效果
labelOne.layer.masksToBounds = YES;

以上是相对于Objective-C的UILabel类的属性和方法的总结,之后还会更新在Swift下的UILabel类的方法调用和属性调用的总结,谢谢大家支持。

    原文作者:zhangsen
    原文地址: https://segmentfault.com/a/1190000006052030
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞