iOS lable上的文字自适应(sizetofit)后,获得每一行的内容。返回一个包含所有行内容的数组。

//  借鉴网络资源- (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;

}
时间: 2024-10-03 22:37:44

iOS lable上的文字自适应(sizetofit)后,获得每一行的内容。返回一个包含所有行内容的数组。的相关文章

IOS图片上添加水印文字(微博上图片上得水印文字)

建一个类目(不知道怎么建的可以去百度一下) UIImage的类目 类目的.h文件  文件名为UIImage+watermark #import <UIKit/UIKit.h> @interface UIImage (watermark) //定义一个方法 - (UIImage *)watermarkImage:(NSString *)text; @end .m文件的实现 #import "UIImage+watermark.h" @implementation UIImag

不通过AppStore,在iOS设备上直接安装应用程序的原理

本文转载至  http://mobile.51cto.com/hot-439095.htm 通过itms-services协议,可以通过safari浏览器直接在iOS设备上安装应用程序.利用这种方式,只要在内网布置一个服务器,测试人员只需要通过测试设备的safari浏览器访问特定的url既可以实现安装,然后测试了. AD:WOT2015 互联网运维与开发者大会 热销抢票 通过itms-services协议,可以通过safari浏览器直接在iOS设备上安装应用程序.利用这种方式,只要在内网布置一个

ios系统 竖屏拍照 canvas处理后 图片旋转(利用exif.js解决ios手机上传竖拍照片旋转90度问题)

转:https://www.cnblogs.com/lovelgx/articles/8656615.html ---恢复内容开始--- 问题:html5+canvas进行移动端手机照片上传时,发现ios手机上传竖拍照片会逆时针旋转90度,横拍照片无此问题:Android手机没这个问题. 解决方法:利用exif.js解决ios手机上传竖拍照片旋转90度问题 因此解决这个问题的思路是:获取到照片拍摄的方向角,对非横拍的ios照片进行角度旋转修正. 利用exif.js读取照片的拍摄信息,详见 htt

iOS for循环创建button,button的宽度根据上面的文字来自适应.

最近需要使用一个标签页,寻思自己写一个demo. 标签的大小根据上面的文字来自适应大小,需要根据后台返回的数据自动换行.没有添加 NSArray *arr = @[@"无知",@"风云变幻",@"施耐庵",@"唉",@"西门吹雪",@"呵呵哒",@"快看看",@"窿窿啦啦",@"一杆禽兽狙",@"合欢花",@

iOS for循环创建button,button的宽度依据上面的文字来自适应.

近期须要使用一个标签页,寻思自己写一个demo. 标签的大小依据上面的文字来自适应大小,须要依据后台返回的数据自己主动换行.没有加入 NSArray *arr = @[@"无知",@"风云变幻",@"施耐庵",@"唉",@"西门吹雪",@"呵呵哒",@"快看看",@"窿窿啦啦",@"一杆禽兽狙",@"合欢花"

IOS 开发上传管理器

由于项目需要整合多处的上传功能,涉及到的主要有数据库(FMDB),多线程() 1.新建项目,下载依赖库 首先新建一个项目这里命名为UploadManager,项目依赖库采用CocoaPods来管理所以在终端进入UploadManager项目中,输入 pod init 这时会看到项目中多了一个文件Podfile,然后打开它,其内容如下: # Uncomment this line to define a global platform for your project # platform :io

Socket在iOS客户端上的简单实现 - 利用GCAsyncSocket框架

GCAsyncSocket 这是一个2003的开发出来的一个开源框架 首先把GCDAsyncSocket的.h和.m文件拖入到工程中 试图控制器遵守GCDAsyncSocketDelegate协议 实例:在页面上有一个简单的textView和textField 在textField中输入文字后,点击发送即可把文字发送到服务器 ,服务器端返回的文字数据会显示到textView上 //  服务器主机ip地址#define kHost @"172.16.3.101"//  服务器主机通信端口

iosiOSlabel基本使用以及文字自适应

(如果需要的不是使用的属性值如换行形式,可以把对应的属性在程序中书写然后按"command"+鼠标左键点击就可以查看所有属性值) 一label基本设置 self.view.backgroundColor = [UIColor redColor]; //创建第一个标签控件 UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(50, 50, 200, 30)]; //对位置设置 //对控件的中心点进行设置 label.cent

使用Vitamio开发iOS平台上的万能播放器

迅速了解 Vitamio是干什么的?看官方怎么说: "Vitamio SDK for iOS是Yixia Ltd官方推出的 iOS 平台上使用的软件开发工具包(SDK),为iOS开发者提供简单.快捷的接口,帮助开发者实现 iOS 平台上的媒体播放应用." 说白了,就是可以帮助你便捷地开发自己的iOS播放器. 本文目标 从0开始建工程,使用VitamioSDK开发一个最简单的播放器:打开app之后,能看到一个播放按钮,点击按钮,就开始播放事先放在Documents目录下的视频文件,再按一