iOS-文本段落样式NSMutableParagraphStyle与NSParagraphStyle的使用和一些富文本处理属性

开发过程中,经常会遇到动态计算行高的问题,

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingContext *)context NS_AVAILABLE(10_11, 7_0);

是苹果推荐的计算方法,显然会遇到段落格式问题,例如行间距、缩进等格式设置需求,attributes传进来的字典中,包含我们设置的字体及格式,其中NSParagraphStyleAttributeName是设置段落风格,NSFontAttributeName是设置字体。

ok,具体来看一下NSParagraphStyleAttributeName的功能。

[objc] view plain copy

  1. //   NSParagraphStyleAttributeName 段落的风格(设置首行,行间距,对齐方式什么的)看自己需要什么属性,写什么
  2. NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
  3. paragraphStyle.lineSpacing = 10;// 字体的行间距
  4. paragraphStyle.firstLineHeadIndent = 20.0f;//首行缩进
  5. paragraphStyle.alignment = NSTextAlignmentJustified;//(两端对齐的)文本对齐方式:(左,中,右,两端对齐,自然)
  6. paragraphStyle.lineBreakMode = NSLineBreakByTruncatingTail;//结尾部分的内容以……方式省略 ( "...wxyz" ,"abcd..." ,"ab...yz")
  7. paragraphStyle.headIndent = 20;//整体缩进(首行除外)
  8. paragraphStyle.tailIndent = 20;//
  9. paragraphStyle.minimumLineHeight = 10;//最低行高
  10. paragraphStyle.maximumLineHeight = 20;//最大行高
  11. paragraphStyle.paragraphSpacing = 15;//段与段之间的间距
  12. paragraphStyle.paragraphSpacingBefore = 22.0f;//段首行空白空间/* Distance between the bottom of the previous paragraph (or the end of its paragraphSpacing, if any) and the top of this paragraph. */
  13. paragraphStyle.baseWritingDirection = NSWritingDirectionLeftToRight;//从左到右的书写方向(一共??三种)
  14. paragraphStyle.lineHeightMultiple = 15;/* Natural line height is multiplied by this factor (if positive) before being constrained by minimum and maximum line height. */
  15. paragraphStyle.hyphenationFactor = 1;//连字属性 在iOS,唯一支持的值分别为0和1

好了,现在就可以很轻松的计算某一段落高度,例如:

[objc] view plain copy

  1. _descAtt = [[NSMutableAttributedString alloc] initWithString:_model.desc];
  2. UIFont *descFont = [UIFont PingFangSC_Regular_WithSize:12];
  3. NSMutableParagraphStyle *descStyle = [[NSMutableParagraphStyle alloc]init];
  4. [descStyle setLineSpacing:1];//行间距
  5. CGSize descSize = [_model.desc boundingRectWithSize:CGSizeMake(w, MAXFLOAT)
  6. options:NSStringDrawingUsesLineFragmentOrigin
  7. attributes:@{NSFontAttributeName:descFont,
  8. NSParagraphStyleAttributeName :descStyle}
  9. context:nil].size;

另外,再介绍几个富文本处理的属性:

[objc] view plain copy

    1. // NSFontAttributeName                设置字体属性,默认值:字体:Helvetica(Neue) 字号:12
    2. // NSForegroundColorAttributeNam      设置字体颜色,取值为 UIColor对象,默认值为黑色
    3. // NSBackgroundColorAttributeName     设置字体所在区域背景颜色,取值为 UIColor对象,默认值为nil, 透明色
    4. // NSLigatureAttributeName            设置连体属性,取值为NSNumber 对象(整数),0 表示没有连体字符,1 表示使用默认的连体字符
    5. // NSKernAttributeName                设定字符间距,取值为 NSNumber 对象(整数),正值间距加宽,负值间距变窄
    6. // NSStrikethroughStyleAttributeName  设置删除线,取值为 NSNumber 对象(整数)
    7. // NSStrikethroughColorAttributeName  设置删除线颜色,取值为 UIColor 对象,默认值为黑色
    8. // NSUnderlineStyleAttributeName      设置下划线,取值为 NSNumber 对象(整数),枚举常量 NSUnderlineStyle中的值,与删除线类似
    9. // NSUnderlineColorAttributeName      设置下划线颜色,取值为 UIColor 对象,默认值为黑色
    10. // NSStrokeWidthAttributeName         设置笔画宽度,取值为 NSNumber 对象(整数),负值填充效果,正值中空效果
    11. // NSStrokeColorAttributeName         填充部分颜色,不是字体颜色,取值为 UIColor 对象
    12. // NSShadowAttributeName              设置阴影属性,取值为 NSShadow 对象
    13. // NSTextEffectAttributeName          设置文本特殊效果,取值为 NSString 对象,目前只有图版印刷效果可用:
    14. // NSBaselineOffsetAttributeName      设置基线偏移值,取值为 NSNumber (float),正值上偏,负值下偏
    15. // NSObliquenessAttributeName         设置字形倾斜度,取值为 NSNumber (float),正值右倾,负值左倾
    16. // NSExpansionAttributeName           设置文本横向拉伸属性,取值为 NSNumber (float),正值横向拉伸文本,负值横向压缩文本
    17. // NSWritingDirectionAttributeName    设置文字书写方向,从左向右书写或者从右向左书写
    18. // NSVerticalGlyphFormAttributeName   设置文字排版方向,取值为 NSNumber 对象(整数),0 表示横排文本,1 表示竖排文本
    19. // NSLinkAttributeName                设置链接属性,点击后调用浏览器打开指定URL地址
    20. // NSAttachmentAttributeName          设置文本附件,取值为NSTextAttachment对象,常用于文字图片混排
    21. // NSParagraphStyleAttributeName      设置文本段落排版格式,取值为 NSParagraphStyle 对象

原文地址:https://www.cnblogs.com/CoderAlex/p/8848890.html

时间: 2024-10-11 02:28:36

iOS-文本段落样式NSMutableParagraphStyle与NSParagraphStyle的使用和一些富文本处理属性的相关文章

BBS(仿博客园系统)项目05(后台管理功能实现:文章添加、富文本编辑器使用、xss攻击、BeautifulSoup4模块、富文本编辑器上传图片、修改头像)

摘要 布局框架搭建 随笔添加 后台管理富文本编辑器KindEditor xss攻击 文章简介的截取,BeautifulSoup4模块 富文本编辑器上传图片 头像修改 一.后台管理框架布局搭建 后台管理布局框架分析:导航条.左侧功能区.右侧主要功能显示和实现区 实现: 导航条:使用bootstrap模板:JavaScript>>导航条 左侧:使用bootstrap模板:组件>>列表组 右侧:使用bootstrap模板:JavaScript>>标签页 新建后台管理路由(注意

使用layui富文本添加日志内容,并获取子窗体的富文本内容

效果图 点击内容 已经把值赋值到table td中 点击内容跳到子页面进行展示 -----------------------------------------------------上边是添加项下边修改时注意 function removeHTMLTag(str) { str = str.replace(/<\/?[^>]*>/g,''); //去除HTML tag str = str.replace(/[ | ]*\n/g,'\n'); //去除行尾空白 //str = str.r

富文本的封装-NSAttributedString 的简易封装

有时我们经常写富文老是写出这样子的出来,极易出错而且可读性非常差,如下: - (void)typeOne{ NSString *string                            = @"你好,CSDN!"; NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string]; // 设置富文本样式 [attributedStrin

iOS之富文本总结

文章内容大纲 1.NSMutableAttributedString的基本使用 2.NSMutableAttributedString的简易封装 3.使用开源代码GOBMarkupPaser处理富文本 4.UITextKit简介 5.编程思想的相关思考 前言 富文本使用案例: 这里我自己也用了富文本实现了简单的却也是常用的例子: 对于最后面的¥50中划线这种设置,估计只有富文本最好用了. 在IOS或者Mac OS X通过UIKit提供的用来显示字符串控件有三个: UILable,UITextFi

iOS学习之NSAttributedString(富文本)

NSAttributedString 叫做富文本,是一种带有属性的字符串,通过它可以轻松的在一个字符串中表现出多种字体.字号.字体大小等各不相同的风格,还可以对段落进行格式化,一般都是对可变富文本(NSMutableAttributedString)进行一些操作 一.NSMutableAttributedString 类的部分常用方法 // 在一定范围中添加单个文字属性 // 参数1:字符属性名 // 参数2:属性值 // 参数3:范围 - (void)addAttribute:(NSStrin

[iOS] 利用 NSAttributedString 进行富文本处理

/iOS /[iOS] 利用 NSAttributedString 进行富文本处理 2016年4月4日 刘小龙 iOS 许多时候我们需要以各种灵活的形式展现文本信息,即富文本.普通的 text 属性显然无法满足要求,这时我们需要利用 Foundation 中的 NSAttributedString--属性字符串进行设置.拥有文本显示功能(text 属性)的 UI 控件也都拥有 attributedText 属性. 常用方法 和 NSString 及 Foundation 框架其它集合一样,NSA

转载的一个富文本,挺实用的

文章内容大纲 1.NSMutableAttributedString的基本使用 2.NSMutableAttributedString的简易封装 3.使用开源代码GOBMarkupPaser处理富文本 4.UITextKit简介 5.编程思想的相关思考 前言 富文本使用案例: 这里我自己也用了富文本实现了简单的却也是常用的例子: 对于最后面的¥50中划线这种设置,估计只有富文本最好用了. 在IOS或者Mac OS X通过UIKit提供的用来显示字符串控件有三个: UILable,UITextFi

利用 NSAttributedString 进行富文本处理

原文出自  http://blog.qiji.tech/archives/8335#RegEx_Categories [iOS] 利用 NSAttributedString 进行富文本处理 /iOS /[iOS] 利用 NSAttributedString 进行富文本处理 2016年4月4日 刘小龙 iOS 许多时候我们需要以各种灵活的形式展现文本信息,即富文本.普通的 text 属性显然无法满足要求,这时我们需要利用 Foundation 中的 NSAttributedString——属性字符

UILabel(富文本)

本文转载至 http://www.jianshu.com/p/5d24d22f99c3 富文本 NSString *str = @"人生若只如初见,何事秋风悲画扇.\n等闲变却故人心,却道故人心易变.\n骊山语罢清宵半,泪雨霖铃终不怨.\n何如薄幸锦衣郎,比翼连枝当日愿."; NSMutableAttributedString *attrStr = [[NSMutableAttributedString alloc] initWithString:str]; attrStr添加字体和设