UILabel

2016-05-21  本文已影响2205人  Barry_小闪

UILabel:UIView UIView属性和方法UILabel都拥有
作用是专门用来显示文字的控件

目录

label相关的属性

[label setText:@"hello world 你好"];

UIFont是UI字体类

UIFont * font = [UIFont systemFontOfSize:15];
UIFont * font1 = [UIFont boldSystemFontOfSize:15];
UIFont * font2 = [UIFont italicSystemFontOfSize:15];
NSArray * allFontName = [UIFont familyNames]; 
NSLog(@"%@", allFontName);

设置字体名和字体大小
UIFont * font3 = [UIFont fontWithName:@"Zapfino" size:16];
    
设置字体
[label setFont:font];
    ```
    
- 6.设置文字颜色(默认是黑色)
```objc
    label.textColor = [UIColor redColor];
    label.shadowColor = [UIColor grayColor];
    [label setShadowOffset:CGSizeMake(2, 2)];

对齐模式

居左 (默认)
NSTextAlignmentLeft 
居中
NSTextAlignmentCenter  
居右
NSTextAlignmentRight 
[label setTextAlignment:NSTextAlignmentLeft];

设置换行模式

[label setLineBreakMode:NSLineBreakByTruncatingMiddle];
NSLineBreakByWordWrapping
NSLineBreakByCharWrapping   
NSLineBreakByClipping   
NSLineBreakByTruncatingHead
 NSLineBreakByTruncatingTail
NSLineBreakByTruncatingMiddle 
 [label setNumberOfLines:3];
 1.设置设置行数为0
    [label setNumberOfLines:0];
  2.设置换行模式
    [label setLineBreakMode:NSLineBreakByWordWrapping];
  [label setAdjustsFontSizeToFitWidth:YES];

自动计算label高度的前提是固定label的宽度,自动换行

    NSString * str = @"阿什顿客服哈是客户的空间哈伦裤的是否考虑啥可来得及发货时看见啊奥斯卡交电话费看见啦释放及时奥斯卡恢复卡是否啊开始地方可拉伸阿什顿客服哈是客户的空间哈伦裤的是否考虑啥可来得及发货时看见啊奥斯卡交电话费看见啦释放及时奥斯卡恢复卡是否啊开始地方可拉伸";
CGRect rect = [str boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17], NSForegroundColorAttributeName:[UIColor redColor]} context:nil];
    UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, rect.size.width, rect.size.height)];
label.text = str;
    label.numberOfLines = 0;
    label.lineBreakMode = NSLineBreakByWordWrapping;
label.font = [UIFont systemFontOfSize:17];

ios动态获取UILabel的高度和宽度

http://www.cnblogs.com/spiritstudio/archive/2011/11/17/2252074.html

在使用UILabel存放字符串时,经常需要获取label的长宽数据,本文列出了部分常用的计算方法。

1.获取宽度,获取字符串不折行单行显示时所需要的长度 
CGSize titleSize = [aString sizeWithFont:font constrainedToSize:CGSizeMake(MAXFLOAT, 30)];
注:如果想得到宽度的话,size的width应该设为MAXFLOAT。

2.获取高度,获取字符串在指定的size内(宽度超过label的宽度则换行)所需的实际高度.

CGSize titleSize = [aString sizeWithFont:font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
注:如果想得到高度的话,size的height应该设为MAXFLOAT。

3.实际编程时,有时需要计算一段文字最后一个字符的位置,并在其后添加图片或其他控件(如info图标),下面代码为计算label中最后一个字符后面一位的位置的方法。

CGSize sz = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(MAXFLOAT, 40)];
CGSize linesSz = [label.text sizeWithFont:label.font constrainedToSize:CGSizeMake(label.frame.size.width, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];
if(sz.width <= linesSz.width) //判断是否折行
{
        lastPoint = CGPointMake(label.frame.origin.x + sz.width, label.frame.origin.y);  
}
else  
{  
        lastPoint = CGPointMake(label.frame.origin.x + (int)sz.width % (int)linesSz.width,linesSz.height - sz.height);  
} 


判断label的text 是否超出显示范围


NSString *aString = @"按实际大奖是拉萨就对啦卡死了都就拉上";
    _lable = [[UILabel alloc]initWithFrame:CGRectMake(50, 20, 150, 50)];
    _lable.text = aString;
    _lable.textColor = [UIColor blackColor];
   
    [_lable setNumberOfLines:2];
    //拿到实际的Label长度
    CGSize titleSize = [aString sizeWithFont:_lable.font constrainedToSize:CGSizeMake(MAXFLOAT, 50)];
   //作比较
    NSLog(@"%lf", titleSize.width);
    NSLog(@"%lf", _lable.frame.size,width);

    [self.view addSubview:_lable];
iOS10 显示文字不全,添加方法解决
iOS10显示文字

调整行间距


 UILabel *yearVipLabel = [[UILabel alloc]initWithFrame:CGRectMake(intevar, CGRectGetMaxY(yearVipTitle.frame) + intevar, self.view.width - intevar * 2, 200)];

 yearVipLabel.numberOfLines = 0;

 NSString *descStr = _buyYearInfoModel.desc;
 NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:descStr];
 NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
 [paragraphStyle setLineSpacing:15];//调整行间距
 [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [descStr length])];
 yearVipLabel.attributedText = attributedString;

上一篇下一篇

猜你喜欢

热点阅读