Label 文字显示一行半,或者多行半
来源:互联网 发布:英雄无敌5mac作弊 编辑:程序博客网 时间:2024/06/15 10:19
最近开发遇到这样的需求,让label显示一行半 (其实是: 当文字内容小于一行半的时候会根据全部显示,当文字内容多余一行半的时候就显示一行半,后面拼接...),如图效果
上代码: 一共有三个方法,包含控制行间距的代码
- (void)viewDidLoad {
[superviewDidLoad];
NSString *newStr =@"天外飞鸿剧评:好剧天外飞鸿剧评:好剧天外飞鸿剧评:好剧天外飞鸿剧评:好剧天外飞鸿剧评:好剧天外飞鸿剧评:好剧天外飞鸿剧评:好剧天外飞鸿剧评:好剧天外飞鸿剧评:好剧天外飞鸿剧评:好剧天外飞鸿剧评:好剧天外飞鸿剧评:好剧天外飞鸿剧评:好剧天外飞鸿剧评:好剧天外飞鸿剧评:好剧天外飞鸿剧评:好剧";
[newStr stringByTrimmingCharactersInSet:[NSCharacterSetwhitespaceAndNewlineCharacterSet]]; //去除掉首尾的空白字符和换行字符
newStr = [newStr stringByReplacingOccurrencesOfString:@"\r"withString:@""];
newStr = [newStr stringByReplacingOccurrencesOfString:@"\n"withString:@""];
//创建label,WIDTH是宏定义的屏幕宽度
UILabel *label = [[UILabelalloc] initWithFrame:CGRectMake(20,100, WIDTH-40,100)];
label.numberOfLines =0;
label.backgroundColor = [UIColororangeColor];
label.textColor = [UIColorredColor];
label.font = [UIFontsystemFontOfSize:14.0];
label.text = newStr;
[self.viewaddSubview:label];
[label sizeToFit];
NSString *string = [selfgetWidthWithLabel:label];
label.text = string;
[selfadjustLabelLineSpacing:label];
}
//核心代码控制显示一行半的方法
- (NSString *)getWidthWithLabel:(UILabel *)label{
NSString *temp =nil;
NSString *temp1=label.text;
CGFloat length =0;
for(int i =0; i < [label.textlength]; i++)
{
temp = [label.textsubstringWithRange:NSMakeRange(i,1)];
// 计算宽度
CGSize size = [tempboundingRectWithSize:CGSizeMake(MAXFLOAT,0.0) options:NSStringDrawingUsesLineFragmentOriginattributes:@{NSFontAttributeName : label.font}context:nil].size;
length=length+size.width;
// 3*label.frame.size.width 此处是三行半,根据需求设置
if (length >= (3*label.frame.size.width + 0.5 * label.frame.size.width)) {
temp1= [[label.textsubstringToIndex:i] stringByAppendingString:@" ..."];
return temp1;
}
}
return temp1;
}
//控制行间距
-(CGSize)adjustLabelLineSpacing:(UILabel *)label
{
CGSize size =CGSizeZero;
label.text = ((NSNull *)label.text == [NSNullnull] || label.text ==nil) ? @"" : label.text;
NSMutableAttributedString *attributedString = [[NSMutableAttributedStringalloc]initWithString:label.text];;
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStylealloc]init];
[paragraphStyle setLineSpacing:6];
[attributedString addAttribute:NSParagraphStyleAttributeNamevalue:paragraphStyle range:NSMakeRange(0, label.text.length)];
label.attributedText = attributedString;
//调节高度
size = CGSizeMake(label.frame.size.width,500000);
CGSize labelSize = [labelsizeThatFits:size];
CGRect rect = label.frame;
rect.size.width = labelSize.width;
rect.size.height = labelSize.height;
label.frame = rect;
return size;
}
- Label 文字显示一行半,或者多行半
- label中的文字换行显示
- label显示不同颜色的文字
- ios Label显示不同颜色文字
- label 文字顶格 或者紧贴最下面
- ComboBox的label显示颜色或者图片
- 文字一行显示,超出部分显示省略号
- Flex Label控件竖排显示文字
- label上显示多样式文字
- label 显示不同颜色 不同文字点击事件
- Label显示不同颜色、字体的文字
- Label显示不同颜色、字体的文字
- C# 窗体动态显示 Label文字
- ios Label上显示不同颜色文字
- iOS 特种label:镂空文字、类歌词进度显示文字
- iOS 特种label:镂空文字、类歌词进度显示文字
- android TextView一行只显示一个文字
- ios 一行中的文字显示多种颜色
- IOS开发之按虚拟键盘的return健隐藏键盘
- 75. Sort Colors
- 项目总结(2016.5-2016-11)
- 高效率开发的Android Studio插件收集
- 微信开发中遇到的问题
- Label 文字显示一行半,或者多行半
- 1508-张晨曦总结《2016年-11月-27日》【连续37天总结】
- 关于viewport的移动页面适配
- 迷宫算法全部解(搜索算法与剪枝思考)
- 混合开发(Hybrid App)之 Ionic【一】-- 认识Ionic,搭建开发环境,创建项目
- json和xml之间区别
- 不一样的倒计时View
- Day7、ListView和适配器Adapter二
- 解决——》SQL Server(MSSQLSERVER) 请求失败或服务未及时响应,有关详细信息,请参见事件日志或其他的适用的错误日志。