iOS UIlabel 自动换行

wjx-king· 2020-02-18

解决方案: 1.获取UILabel的frame大小 2.获取UILabel的字体大小 3.获取UILabel的文本内容 4.根据上面的3部分数据,计算文本显示区域大小 5.根据4计算的大小,实时改变UILabel的frame

UILabel *label = [[UILabel alloc] init];

label.text = @"我是换行的标签在这里可以实现标签换行功能,不用担心文本过多文字跑出标签";

NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:14]};

CGSize labelSize = [label.text boundingRectWithSize:CGSizeMake(200, 5000) options: NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attribute context:nil].size;

//200为UILabel的宽度,5000是预设的一个高度,表示在这个范围内

//注意:之前使用了NSString类的sizeWithFont: constrainedToSize: lineBreakMode:方法,但是该方法已经被iOS7 Deprecated了,而iOS7新出了一个boudingRectWithSize: options: attributes: context:方法来代替。

label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, label.frame.size.width, labelSize.height);

//保持原来Label的位置和宽度,只是改变高度。

label.numberOfLines = 0;//表示label可以多行显示

label.textColor = UICOLOR_FROM_RGB(100, 100, 100, 1);

label.font = [UIFont systemFontOfSize:14];

[self.view addSubview:label];
北京pk赛车开奖记录 篮球比分图片 上海时时彩 富贵王国 二分彩 诺安股票320003 马戏团 海南4+1 体彩p5 浙江20选5 体彩p3 股票融资买卖时如何操作 鸿满仓配资 6场半全场 智富配资 智富配资 河南11选5