欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > 内容正文

iOS开发- UILabel 自动换行 及 高度自适应,iosuilabel

来源: 开发者 投稿于  被查看 11480 次 评论:102

iOS开发- UILabel 自动换行 及 高度自适应,iosuilabel


主要是今天看到论坛有人问这个问题,帮忙解决之后, 顺便Mark下。


很简单, 代码写的很清楚。 直接上代码。


UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 100, 300, 50)];
    label.text = @"今天下午全市多云到阴有阵雨或雷雨,今天夜里到明天阴有阵雨,雨量可达大雨。 东北风5-6级阵风7级,逐渐增强到6-7级阵风8级。 今天最高气温:26左右, 明晨最低气温:22左右。 今晨最低气温:21。 今日紫外线等级:2级,照射强度弱,适当防护。 明日洗车指数:4级,天气有雨,不宜洗车。";
    //清空背景颜色
    label.backgroundColor = [UIColor clearColor];
    //设置字体颜色为白色
    label.textColor = [UIColor whiteColor];
    //设置label的背景色为黑色
    label.backgroundColor = [UIColor blackColor];
    //文字居中显示
    label.textAlignment = UITextAlignmentCenter;
    //自动折行设置
    label.lineBreakMode = UILineBreakModeWordWrap;
    label.numberOfLines = 0;
    
    //自适应高度
    CGRect txtFrame = label.frame;
    
    label.frame = CGRectMake(10, 100, 300,
                             txtFrame.size.height =[label.text boundingRectWithSize:
                                                    CGSizeMake(txtFrame.size.width, CGFLOAT_MAX)
                                                                            options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
                                                                         attributes:[NSDictionary dictionaryWithObjectsAndKeys:label.font,NSFontAttributeName, nil] context:nil].size.height);
    label.frame = CGRectMake(10, 100, 300, txtFrame.size.height);
    
    [self.view addSubview:label];


效果图:



IOS下 UILabel 怎自动换行

背景:相信很多朋友都遇到过,文本的内容长度不一,需要根据内容的多少来自动换行处理。场景:很多APP中评论,有的评论长,有的评论短,有的一行,有的多行。下面以评论的实现为例来说说具体如何实现。技术点:UILabel的自动换行,自动换行的同时要自适应Frame大小。UITableView的行高自适应内容,实时调整高度。实现方法:UILabel的自动换行获取UILabel的frame大小获取UILabel的字体大小获取UILabel的文本内容根据上面的3部分数据,计算文本显示区域大小根据4计算的大小,实时改变UILabel的framecode如下: NSString * labelStr = @“你好,这是UILabel的自动换行测试内容,主要实现多行数据的自动换行,自适应不同行数的数据”; CGSize labelSize = {0, 0}; labelSize = [labelStrsizeWithFont:[UIFontsystemFontOfSize:14] constrainedToSize:CGSizeMake(200.0, 5000) lineBreakMode:UILineBreakModeWordWrap];//14 为UILabel的字体大小//200为UILabel的宽度,5000是预设的一个高度,表示在这个范围内 label.numberOfLines = 0;//表示label可以多行显示 label.lineBreakMode = UILineBreakModeCharacterWrap;//换行模式,与上面的计算保持一致。 label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, label.frame.size.width, labelSize.height);//保持原来Label的位置和宽度,只是改变高度。UITableView的行高自适应内容这个和上面的类似,直接上Code:- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{NSString * labelStr = @“你好,这是UILabel的自动换行测试内容,主要实现多行数据的自动换行,自适应不同行数的数据”;CGSize labelSize = {0, 0};labelSize = [labelStrsizeWithFont:[UIFontsystemFontOfSize:14]constrainedToSize:CGSizeMake(200.0, 5000)lineBreakMode:UILineBreakModeWordWrap];//14 为UILabel的字体大小//200为UILabel的宽度,5000是预设的一个高度,表示在这个范围内return labelSize.height + delta;//delta 是Cell除了自适应控件UILabel外的其它控件所占的高度。}小结:实现上面2个技术点后,评论相关的APP或者类似的APP都可以做到自适应内容,根据内容多少自动换行,自动调整控件的位置和大小,达到最优的显示效果。
 

IOS下 UILabel 怎自动换行

背景:相信很多朋友都遇到过,文本的内容长度不一,需要根据内容的多少来自动换行处理。场景:很多APP中评论,有的评论长,有的评论短,有的一行,有的多行。下面以评论的实现为例来说说具体如何实现。技术点:UILabel的自动换行,自动换行的同时要自适应Frame大小。UITableView的行高自适应内容,实时调整高度。实现方法:UILabel的自动换行获取UILabel的frame大小获取UILabel的字体大小获取UILabel的文本内容根据上面的3部分数据,计算文本显示区域大小根据4计算的大小,实时改变UILabel的framecode如下: NSString* labelStr =@“你好,这是UILabel的自动换行测试内容,主要实现多行数据的自动换行,自适应不同行数的数据”; CGSize labelSize ={0,0}; labelSize=[labelStrsizeWithFont:[UIFontsystemFontOfSize:14] constrainedToSize:CGSizeMake(200.0,5000) lineBreakMode:UILineBreakModeWordWrap];//14 为UILabel的字体大小//200为UILabel的宽度,5000是预设的一个高度,表示在这个范围内 label.numberOfLines=0;//表示label可以多行显示 label.lineBreakMode = UILineBreakModeCharacterWrap;//换行模式,与上面的计算保持一致。 label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, label.frame.size.width, labelSize.height);//保持原来Label的位置和宽度,只是改变高度。UITableView的行高自适应内容这个和上面的类似,直接上Code:-(CGFloat)tableView:(UITableView*)tableView heightForRowAtIndexPath:(NSIndexPath*)indexPath{NSString* labelStr =@“你好,这是UILabel的自动换行测试内容,主要实现多行数据的自动换行,自适应不同行数的数据”;CGSize labelSize ={0,0};labelSize=[labelStrsizeWithFont:[UIFontsystemFontOfSize:14]constrainedToSize:CGSizeMake(200.0,5000)lineBreakMode:UILineBreakModeWordWrap];//14 为UILabel的字体大小//200为UILabel的宽度,5000是预设的一个高度,表示在这个范围内returnlabelSize.height + delta;//delta 是Cell除了自适应控件UILabel外的其它控件所占的高度。}
 

相关频道:

用户评论