iOS lable上的文字自适应(sizetofit)后,获得每一行的内容。返回一个包含所有行内容的数组。
2017-08-07 14:20
423 查看
// 借鉴网络资源 - (void)viewDidLoad { [super viewDidLoad]; UILabel * lb = [[UILabel alloc]initWithFrame:CGRectMake(10, 100, self.view.bounds.size.width-20, 100)]; lb.text = @"骄傲的复活甲卡萨丁涸鲋得水房间卡灰色的加咖啡和撒娇款到发货萨科技回合肥就爱看水电费黄金卡水电费哈是点击看见啊来回飞机熬枯受淡饭盒刷了咖啡壶埃及开发哈空间的凤凰卡积分导航栏"; [self.view addSubview:lb]; lb.font = [UIFont systemFontOfSize:16.0]; lb.numberOfLines = 0; [lb sizeToFit]; NSLog(@"%@",[self getLinesArrOfStringInLbale:lb.text andLblWidth:lb.bounds.size.width andLblFont:lb.font]); } - (NSArray *)getLinesArrOfStringInLbale:(NSString *)contentText andLblWidth:(CGFloat)lblWidth andLblFont:(UIFont *)lblFont{ NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init]; [paragraphStyle setLineSpacing:6]; NSMutableAttributedString *setString = [[NSMutableAttributedString alloc]initWithString:contentText]; [setString addAttribute:NSParagraphStyleAttributeName value:UIPasteboardTypeAutomatic range:NSMakeRange(0, contentText.length)]; [setString addAttribute:NSFontAttributeName value:lblFont range:NSMakeRange(0, contentText.length)]; CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)setString); CGMutablePathRef path = CGPathCreateMutable(); CGPathAddRect(path, NULL, CGRectMake(0, 0, lblWidth, 999999999)); CTFrameRef frame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, NULL); NSArray *lines = (__bridge NSArray *)CTFrameGetLines(frame); NSMutableArray *linesArr = [NSMutableArray new]; for (id line in lines) { CTLineRef lineRef = (__bridge CTLineRef)line; CFRange lineRange = CTLineGetStringRange(lineRef); NSRange range = NSMakeRange(lineRange.location, lineRange.length); NSString *lineStirng = [contentText substringWithRange:range]; [linesArr addObject:lineStirng]; } return (NSArray *)linesArr; }
相关文章推荐
- 遍历一个对象数组,返回一个包含相匹配的属性-值对的所有对象的数组
- 写一个 function,它遍历一个对象数组(第一个参数)并返回一个包含相匹配的属性-值对(第二个参数)的所有对象的数组。
- 使用jQuery匹配文档中所有的li元素,返回一个jQuery对象,然后通过数组下标的方式读取jQuery集合中第1个DOM元素,此时返回的是DOM对象,然后调用DOM属性innerHTML,读取该元素 包含的文本信息
- 将一个字典内的内value转换为集合:返回一个数组,此数组中包含输入字典的键值对中的数组的所有元素(为NSArray添加category)
- 编写一个方法,输入DOM节点,返回包含所有父节点的一个数组
- 给定一个整数n,和k,返回包含k个所有所有子数组
- 设计函数返回一个数组中所有元素被第一个元素除的结果
- PHP javascript 实现将将一句话分解成包含所有单词的一个数组
- UIWebView获得内容的高-作出自适应高的UIWebView + WebView中点击链接返回
- 一道值得深思的面试题:写一个函数,返回一个数组中所有元素被第一个元素除的结果。
- 给定一个数组arr和一个目标数targrt,删除所有目标值元素,并返回新长度
- 编程之美 - 写一个函数,返回数组中所有元素被第一个元素除的结果
- [编程之美]写一个函数,返回一个数组中所有元素被第一个元素除的结果
- ios 文字 控件 自适应 高度 宽度 CustomCell 自适应高度+uilabel自动换行+ UITextView 根据内容自动调整高度
- iOS 随机打乱一个数组的顺序 获得一个新的数组
- 定义一个文件输入流,调用 read(byte[] b)方法将 exercise.txt 文件中的所有内容打印出来 (byte 数组的大小限制为 5)。
- 给一个只包含 0, 1, * 的 String,将所有的* 替换成 0 或者 1, 返回所有的可能行
- iOS:改变一个页面push后一个页面返回按钮的文字
- 如何用正则表示式获得一个页面内容中所有图片地址
- range() 函数创建并返回一个包含指定范围的元素的数组