获取lable行数
2016-04-27 16:40
155 查看
-(NSArray *)getSeparatedLinesFromLabel { NSString *text = [self text]; UIFont *font = [self font]; CGRect rect = [self frame]; CTFontRef myFont = CTFontCreateWithName((__bridge CFStringRef)([font fontName]), [font pointSize], NULL); NSMutableAttributedString *attStr = [[NSMutableAttributedString alloc] initWithString:text]; [attStr addAttribute:(NSString *)kCTFontAttributeName value:(__bridge id)myFont range:NSMakeRange(0, attStr.length)]; CTFramesetterRef frameSetter = CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)attStr); CGMutablePathRef path = CGPathCreateMutable(); CGPathAddRect(path, NULL, CGRectMake(0,0,rect.size.width,100000)); CTFrameRef frame = CTFramesetterCreateFrame(frameSetter, CFRangeMake(0, 0), path, NULL); NSArray *lines = (__bridge NSArray *)CTFrameGetLines(frame); NSMutableArray *linesArray = [[NSMutableArray alloc]init]; for (id line in lines) { CTLineRef lineRef = (__bridge CTLineRef )line; CFRange lineRange = CTLineGetStringRange(lineRef); NSRange range = NSMakeRange(lineRange.location, lineRange.length); NSString *lineString = [text substringWithRange:range]; [linesArray addObject:lineString]; } return (NSArray *)linesArray; } 用这个方法就行了 返回值是个NSarray 获取到NSarray.count 就是label的行数
相关文章推荐
- 数组与ARRAYLIST的关系与区别
- 字符串的封装
- Hibernate 中使用 HibernateTemplate的三种方法
- Android 加载外部so
- autolayout中 top layout guide详解
- SQL查询作业执行情况
- 怎样制作EDIUS中视频边缘模糊特效
- 《深入理解Java虚拟机》第三章读书笔记:类文件结构
- QT5添加资源文件以及设置背景
- [Android 基础系列]Service、IntentService和习以为常的误解
- 检查request返回值类型的一个小方法
- 【经典算法】——KMP,深入讲解next数组的求解
- andriod/ios webview与js交互 html_demo
- CC2541之数据加密与解密
- Mybatis数据源与连接池(一)介绍创建过程
- iOS类别(Category)与扩展(Extension)
- iOS 开发工具集合
- [BCG]如何建立一个BCG属性页对话框
- centos 6.5+hadoop2.4.1环境配置
- 利用友盟定位iOS线上版本项目的崩溃位置