Label--Label自适应

来源:互联网 发布:mac os更新系统失败 编辑:程序博客网 时间:2024/04/29 20:58

一、sizeToFit

[objc] view plain copy
  1. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5500)];  
  2.     label.backgroundColor = [UIColor blueColor];  
  3.     [label setFont:[UIFont systemFontOfSize:20]];  
  4.     label.text = @"我们都有一个家名字叫中国";  
  5.     //会直接改变了这个label的宽和高,使它根据上面字符串的大小做合适的改变  
  6.     [label sizeToFit];  
  7.     NSLog(@"labelWidth = %f  labelHeight = %f", label.frame.size.width, label.frame.size.height);  
  8.     // 输出:sizeThatFits.width = 240.000000  sizeThatFits.height = 24.000000  
  9.     [self addSubview:label];  

二、sizeThatFits方法的使用

[objc] view plain copy
  1. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5500)];  
  2.     label.backgroundColor = [UIColor blueColor];  
  3.     [label setFont:[UIFont systemFontOfSize:20]];  
  4.     label.text = @"我们都有一个家名字叫中国";  
  5.     CGSize sizeThatFits = [label sizeThatFits:CGSizeZero];//返回合适的size  
  6.     NSLog(@"sizeThatFits.width = %f  sizeThatFits.height = %f", sizeThatFits.width, sizeThatFits.height);  
  7.     // 输出:sizeThatFits.width = 240.000000  sizeThatFits.height = 24.000000  
  8.     NSLog(@"labelWidth = %f  labelHeight = %f", label.frame.size.width, label.frame.size.height);  
  9.     // 输出:labelWidth = 0.000000  labelHeight = 0.000000  
  10.     //说明sizeThatSize并没有改变原始label的大小,只是返回了一个合适的size;  
  11.     //接下来就可以使用这个size来重新设置label的frame了;  
  12.     label.frame = CGRectMake(55, sizeThatFits.width, sizeThatFits.height);  
  13.     [self addSubview:label];  

[objc] view plain copy
  1. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(5500)];  
  2.     label.backgroundColor = [UIColor blueColor];  
  3.     [label setFont:[UIFont systemFontOfSize:20]];  
  4.     label.numberOfLines = 0;//不限行数  
  5.     label.lineBreakMode = NSLineBreakByCharWrapping;//设置换行模式  
  6.     label.text = @"我们都有一个家名字叫中国我们都有一个家名字叫中国";  
  7.     //若label可以换行:  
  8.     //100:表示100以下会返回自适应的宽度,超过100返回实际宽度(若有换行最宽为100)。  
  9.     //MAXFLOAT:表示不限高度。  
  10.     //当然高度也可以给个固定值如400.400以下会返回自适应高度,超过400会返回实际高度。  
  11.     CGSize size = [label sizeThatFits:CGSizeMake(100, MAXFLOAT)];  
  12.     label.frame = CGRectMake(55, size.width, size.height);  
  13.     [self addSubview:label];  
  14.     //PS:label的自动换行可以使用此方法来实现  

三、让文本适应label的宽度,label宽度不变字体大小根据字数的多少来调节

label.adjustsFontSizeToFitWidth = YES;

小知识点:

label的截断模式

当label的文本内容超过label的宽度时有一个截断模式,就是来处理多出的文本的显示问题。

[objc] view plain copy
  1. label.lineBreakMode = NSLineBreakByCharWrapping;以字符为显示单位显示,后面部分省略不显示。  
  2. label.lineBreakMode = NSLineBreakByClipping;剪切与文本宽度相同的内容长度,后半部分被删除。  
  3. label.lineBreakMode = NSLineBreakByTruncatingHead;前面部分文字以……方式省略,显示尾部文字内容。  
  4. label.lineBreakMode = NSLineBreakByTruncatingMiddle;中间的内容以……方式省略,显示头尾的文字内容。  
  5. label.lineBreakMode = NSLineBreakByTruncatingTail;结尾部分的内容以……方式省略,显示头的文字内容。  
  6. label.lineBreakMode = NSLineBreakByWordWrapping;以单词为显示单位显示,后面部分省略不显示。  
0 0
原创粉丝点击