之前文本整理有一点乱,这边重新整理一下,下面是效果图,一共两个UILabel,

富文本整理:

 /*NSForegroundColorAttributeName设置字体颜色,对象UIColor;
NSParagraphStyleAttributeName设置段落格式,对象NSMutableParagraphStyle;
NSFontAttributeName设置字体,对象UIFont;
NSBackgroundColorAttributeName设置背景颜色,对象UIColor;
NSKernAttributeName设置字符间距,对象NSNumber
NSStrikethroughStyleAttributeName是指删除线样式 对象NSUnderlineStyle
NSStrikethroughColorAttributeName删除线颜色,对象UIColor
NSUnderlineStyleAttributeName设置下划线,参考删除线
NSUnderlineColorAttributeName设置下划线颜色
NSStrokeWidthAttributeName设置笔画宽度,对象NSNumber,负值填充效果,正值中空效果
NSStrokeColorAttributeName当文字中空或者填充设置文字的描边颜色,对象UIColor;
NSShadowAttributeName 设置阴影,NSShadow对象
NSBaselineOffsetAttributeName设置基线偏移值,对象NSNumber (float),正值上偏,负值下偏
NSObliquenessAttributeName设置字形倾斜度,对象NSNumber (float),正值右倾,负值左倾
NSExpansionAttributeName 设置文本横向拉伸属性,对象NSNumber (float),正值横向拉伸文本,负值横向压缩文本
NSVerticalGlyphFormAttributeName 设置文字排版方向,取值为 NSNumber 对象(整数),0 表示横排文本,1 表示竖排文本
NSLinkAttributeName设置链接属性,点击后调用浏览器打开指定URL地址,对象NSString,NSUrl,这个只能UITextView可用UITextView的代理方法中shouldInteractWithURL返回true可用
NSTextEffectAttributeName设置文本特殊效果,目前只有一个可用效果 NSTextEffectLetterpressStyle(凸版印刷效果
设置连体属性,取值为NSNumber 对象(整数),0 表示没有连体字符,1 表示使用默认的连体字符//没有测出效果
*/

源码展示:

 NSString *text = @"池塘大桥下,游过一群鸭,快来快来数一数,二四六七八,嘎嘎嘎嘎,真呀真多呀,fly,数不清到底多少鸭";
NSMutableParagraphStyle * paragraphStyle = [[NSMutableParagraphStyle alloc] init];
//行间距为
[paragraphStyle setLineSpacing:8];
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:text attributes:@{NSForegroundColorAttributeName : [UIColor blueColor], NSParagraphStyleAttributeName: paragraphStyle, NSFontAttributeName:[UIFont boldSystemFontOfSize:18]}] ; //设置特殊字体文本格式
NSRange range = [text rangeOfString:@"池塘大桥下"];
[string addAttributes:@{NSForegroundColorAttributeName:[UIColor redColor],
NSFontAttributeName:[UIFont boldSystemFontOfSize:12],NSBackgroundColorAttributeName:[UIColor yellowColor],NSKernAttributeName:@(12),NSStrikethroughStyleAttributeName:@(NSUnderlineStyleDouble),NSStrikethroughColorAttributeName:[UIColor purpleColor]} range:range];//添加属性 NSRange range1 = [text rangeOfString:@"游过"];
[string addAttributes:@{NSStrokeWidthAttributeName:@(-2),NSStrokeColorAttributeName:[UIColor redColor]} range:range1];//添加属性 NSRange range2 = [text rangeOfString:@"一群鸭"];
NSShadow *shadow = [NSShadow new];
[shadow setShadowColor:[UIColor redColor]];
[shadow setShadowOffset:CGSizeMake(5.0f, 5.0f)];//设置x,y轴偏移量
[shadow setShadowBlurRadius:1.0];//设置模糊度
[string addAttributes:@{NSShadowAttributeName:shadow} range:range2];//添加属性 NSRange range3 = [text rangeOfString:@"快来快来"];
[string addAttributes:@{NSBaselineOffsetAttributeName:@(10)} range:range3];//添加属性 NSRange range4 = [text rangeOfString:@"数一数"];
[string addAttributes:@{NSObliquenessAttributeName:@(0.5)} range:range4];//添加属性
NSRange range5 = [text rangeOfString:@"二四"];
[string addAttributes:@{NSExpansionAttributeName:@(0.8)} range:range5];//添加属性
NSRange range6 = [text rangeOfString:@"六七八"];
[string addAttributes:@{NSExpansionAttributeName:@(-0.8)} range:range6];//添加属性 /**
没有测出具体的区别
NSWritingDirectionAttributeName 设置文字书写方向,从左向右书写或者从右向左书写
@[@(NSWritingDirectionLeftToRight | NSWritingDirectionEmbedding)]
@[@(NSWritingDirectionLeftToRight | NSWritingDirectionOverride)]
@[@(NSWritingDirectionRightToLeft | NSWritingDirectionEmbedding)]
@[@(NSWritingDirectionRightToLeft | NSWritingDirectionOverride)]
*/ [string addAttributes:@{NSWritingDirectionAttributeName:@[@(NSWritingDirectionRightToLeft | NSWritingDirectionEmbedding)]} range:NSMakeRange(0, text.length)];//添加属性 [string addAttributes:@{NSVerticalGlyphFormAttributeName:@1} range:NSMakeRange(0, text.length)];//添加属性 NSRange range8 = [text rangeOfString:@"嘎嘎嘎嘎"];
NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
[string addAttributes:@{NSLinkAttributeName:url} range:range8];//添加属性
NSRange range9 = [text rangeOfString:@"真呀真多呀"];
[string addAttributes:@{NSTextEffectAttributeName:NSTextEffectLetterpressStyle} range:range9];//添加属性
NSRange range10 = [text rangeOfString:@"fly"];
[string addAttributes:@{NSLigatureAttributeName:@0} range:range10];//添加属性 self.label.attributedText = string;

NSMutableParagraphStyle用法整理:

    NSTextAttachment *attachment = [[NSTextAttachment alloc] init];

    //使用一张图片作为Attachment数据

    attachment.image = [UIImage imageNamed:@"chepaihao"];

    //这里bounds的x值并不会产生影响

    attachment.bounds = CGRectMake(5,  (self.label1.font.lineHeight - self.label1.font.pointSize) / 2, 20, 10);

    NSMutableParagraphStyle * paragraphStyle1 = [[NSMutableParagraphStyle alloc] init];

    [paragraphStyle1 setLineSpacing:20];

    //首行缩进

    [paragraphStyle1 setFirstLineHeadIndent:20];

    [paragraphStyle1 setLineBreakMode:NSLineBreakByTruncatingMiddle];

    //两端对齐的)文本对齐方式

        paragraphStyle1.minimumLineHeight = 10;//最低行高

        paragraphStyle1.maximumLineHeight = 20;//最大行高

        paragraphStyle1.paragraphSpacing = 45;//段与段之间的间距

//    paragraphStyle1.paragraphSpacingBefore = 1000;//段首行空白空间

        paragraphStyle1.baseWritingDirection = NSWritingDirectionLeftToRight;//从左到右的书写方向(一共➡️三种)

//        paragraphStyle1.lineHeightMultiple = -100;没有测出效果

    //    paragraphStyle1.hyphenationFactor = 1;//连字属性 在iOS,唯一支持的值分别为0和1

    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:@"你是一个好人,你是一个好人,你是一个好人,你是一个好人,你是一个好人,你是一个好人,你是一个好人,你是一个好人,你是一个好人,你是一个好人" attributes:@{NSParagraphStyleAttributeName: paragraphStyle1}];

        [attributedString appendAttributedString:[NSAttributedString attributedStringWithAttachment:attachment]];

        [attributedString appendAttributedString:[NSAttributedString attributedStringWithAttachment:attachment]];

        [attributedString appendAttributedString:[[NSMutableAttributedString alloc] initWithString:@"\n你是一个好人,你是一个好人,你是一个好人,你是一个好人,你是一个好人,你是一个好人,你是一个好人,你是一个好人,你是一个好人,你是一个好人" attributes:@{NSParagraphStyleAttributeName: paragraphStyle1}]];

        [attributedString appendAttributedString:[NSAttributedString attributedStringWithAttachment:attachment]];

    self.label1.backgroundColor = [UIColor redColor];

    //    self.label1.textAlignment = NSTextAlignmentCenter;

    self.label1.attributedText = attributedString;

    //    self.label1.lineBreakMode = NSLineBreakByCharWrapping;

获取富文本的高度和普通label的高度一样:

CGSize attSize = [string boundingRectWithSize:CGSizeMake(width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil].size;

注意事项:我们设置NSMutableParagraphStyle的lineSpacing可能和我们想象的不大一样,间距会比我们想象的高一点点,如果我们设置10个像素,就需要这么设置,减去系统自带的间距

paragraphStyle.lineSpacing = 10 - (label.font.lineHeight - label.font.pointSize);

UILabel富文本 段落格式以及UILabel添加图片的更多相关文章

  1. Swift中的富文本注释格式

    Apple当前启用了Markup语法形式的富文本注释格式,并且为此列出了官方文档,可以参考此链接:https://developer.apple.com/library/ios/documentati ...

  2. UIlabel - 富文本属性

    1.NSKernAttributeName: @10 调整字句 kerning 字句调整 2.NSFontAttributeName : [UIFont systemFontOfSize:_fontS ...

  3. UILabel(富文本)

    本文转载至 http://www.jianshu.com/p/5d24d22f99c3 富文本 NSString *str = @"人生若只如初见,何事秋风悲画扇.\n等闲变却故人心,却道故 ...

  4. JAVAEE——宜立方商城04:图片服务器FastDFS、富文本编辑器KindEditor、商品添加功能完成

    1. 学习计划 1.图片上传 a) 图片服务器FastDFS b) 图片上传功能实现 2.富文本编辑器的使用KindEditor 3.商品添加功能完成 2. 图片服务器的安装 1.存储空间可扩展. 2 ...

  5. Java 读取Word文本/段落格式属性

    本文介绍通过Java后端程序代码来读取Word文本和段落格式的方法. 本次测试环境如下: Word版本:2013 编译环境:IntelliJ IDEA2018 Work库:free spire.doc ...

  6. vue富文本编辑器vue-quill-editor使用总结(包含图片上传,拖拽,放大和缩小)

    vue-quill-editor是vue很好的富文本编辑器,富文本的功能基本上都支持,样式是黑白色,简洁大方. 第一步下载 vue-quill-editor: npm i vue-quill-edit ...

  7. 富文本编辑器CKeditor的配置和图片上传,看完不后悔

    CKeditor是一款富文本编辑器,本文将用极为简单的方式介绍一下它的使用和困扰大家很久的图片上传问题,要有耐心. 第一步:如何使用 1.官网下载https://ckeditor.com/ckedit ...

  8. vue v-html 富文本解析 空格,换行,图片大小问题

    1.保留空格,换行属性 //保留换行空格问题 white-space: pre-wrap; 2.超出部分,强制换行,一般用于数字 //富文本换行 word-wrap: break-word; tabl ...

  9. C# WinForm 富文本编辑器 用kindeditor实现本地图片只选取不上传到编辑器

    以下资料有参考网上其它童鞋作品,原作者看到务喷!!!! 以下资料有参考网上其它童鞋作品,原作者看到务喷!!!! 重要的事只要说两遍... 网上找了几天关于WinForm富文本编辑效果都不理想,各种坑, ...

随机推荐

  1. listView优化方案

    1.如果自定义适配器,那么在getView方法中要考虑方法传进来的参数contentView是否为null,如果为null就创建contentView并返回,如果不为null则直接使用.在这个方法中尽 ...

  2. 批量更改数据库表架构(生成sql后直接执行!)

    批量更改数据库表架构(生成sql后直接执行!) use my_test; --当前数据库 ), ), ), @NewSql VARCHAR(max), @Index INT; SET @SchemaO ...

  3. vue笔记 - 组件间通信 之 中央事件总线bus

    中央事件总线 - 就是一个名字可以叫做bus的vue空实例,里边没有任何内容: var bus = new Vue(); 人如其名,她就像一个公交车一样,来回输送人,将a站点的A输送到b站点,再将b站 ...

  4. jQuery事件处理(七)

    1.自定义事件(用户手动trigger的一般都是自定义事件) trigger: function( event, data, elem, onlyHandlers ) { var i, cur, tm ...

  5. Archive of all Android Studio releases / Eclipse 版本大全 / OpenJDK 各版本

    一 Android Studio 版本大全 https://developer.android.com/studio/archive.html Download Archives This is an ...

  6. LeetCode 10 Regular Expression Matching(字符串匹配)

    题目链接 https://leetcode.com/problems/regular-expression-matching/?tab=Description   '.' Matches any si ...

  7. Linux上的ftp服务器vsftpd之配置满天飞--设置匿名用户访问(不弹出用户名密码框)以及其他用户可正常上传

    一.问题背景 没事谁折腾这鬼玩意哦...还不是因为bug. 我们的应用,用户头像是存在ftp上的.之前的ftp服务器是一台windows,我们后台服务器程序收到用户上传头像的请求时,会用一个ROOT/ ...

  8. XSS 跨站脚本攻击(Cross Site Scripting)

    xss表示Cross Site Scripting(跨站脚本攻击),它与SQL注入攻击类似,SQL注入攻击中以SQL语句作为用户输入,从而达到查询/修改/删除数据的目的,而在xss攻击中,通过插入恶意 ...

  9. CF 1100E Andrew and Taxi(二分答案)

    E. Andrew and Taxi time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  10. C语言位操作--奇偶校验算法

    信息是以比特流的方式传输的,类似01000001.在传输过程中,有可能会发生错误,比如,我们存储了01000001,但是取出来却是01000000,即低位由0变成了1.为了检测到这种错误,我们可以通过 ...