首页 > 其他分享 >IOS富文本

IOS富文本

时间:2023-04-05 14:23:20浏览次数:33  
标签:NSNumber IOS UIColor 设置 文本 取值 paragraphStyle

IOS富文本

  1. 通过String创建一个NSMutableAttributedString,必须是带有Mutable的可变富文本,否则无法添加属性
let string = "我是一个富文本"
let astring = NSMutableAttributedString(string: string)
  1. NSMutableAttributedString添加属性
astring.addAttributes([.foregroundColor: UIColor.white, .font: UIFont.pfMediumFont(ofSize: 22)], range: .init(location: 0, length: 2))
astring.addAttributes([.foregroundColor: UIColor.blue, .font: UIFont.pfMediumFont(ofSize: 12)], range: .init(location: 2, length: 5))

调用的是这个方法

open func addAttributes(_ attrs: [NSAttributedString.Key : Any] = [:], range: NSRange)

其中第一个参数为一个字典,NSAttributedString.Key包含了所有可配置的选项的key

range代表这此配置所要对应的字符串.init(location: 0, length: 2)从索引0开始,长度为2,也就是我是

上面这段代码设置了"我是"颜色为白色,字体大小为22,"一个富文本"颜色为蓝色,字体大小为12

效果图

IMG_7466

认识一下其他的属性

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

其中NSParagraphStyle或者NSMutableParagraphStyle为段落样式

let paragraphStyle = NSMutableParagraphStyle()
paragraphStyle.lineSpacing = 10// 字体的行间距
paragraphStyle.firstLineHeadIndent = 20.0//首行缩进
paragraphStyle.alignment = .justified//(两端对齐的)文本对齐方式:(左,中,右,两端对齐,自然)
paragraphStyle.lineBreakMode = .byTruncatingTail//结尾部分的内容以……方式省略 ( "...wxyz" ,"abcd..." ,"ab...yz")
paragraphStyle.headIndent = 20//整体缩进(首行除外)
paragraphStyle.tailIndent = 20//尾部缩进
paragraphStyle.minimumLineHeight = 10//最低行高
paragraphStyle.maximumLineHeight = 20//最大行高
paragraphStyle.paragraphSpacing = 15//段与段之间的间距
paragraphStyle.paragraphSpacingBefore = 22.0//段首行空白空间/* Distance between the bottom of the previous paragraph (or the end of its paragraphSpacing, if any) and the top of this paragraph. */paragraphStyle.baseWritingDirection = NSWritingDirectionLeftToRight//从左到右的书写方向(一共➡️⬇️⬅️三种)
paragraphStyle.lineHeightMultiple = 15/* Natural line height is multiplied by this factor (if positive) before being constrained by minimum and maximum line height. */
paragraphStyle.hyphenationFactor = 1//连字属性 在iOS,唯一支持的值分别为0和1

换行

想要控制富文本换行,需要设置UILabel的属性numberOfLines为0,同时在字符串中需要换行的地方加入"\n"

let tempV = UILabel()
tempV.numberOfLines = 0
let astring = NSMutableAttributedString(string: "123\n456")
astring.addAttributes([.font: UIFont.systemFont(ofSize: 12),.foregroundColor: UIColor.black], range: .init(location: 0, length: 3))
astring.addAttributes([.font: UIFont.systemFont(ofSize: 18),.foregroundColor: UIColor.blue], range: .init(location: 3, length: 4))
tempV.attributedText = astring

效果图

IMG_7465

其他的效果又兴趣可以自己试试

标签:NSNumber,IOS,UIColor,设置,文本,取值,paragraphStyle
From: https://www.cnblogs.com/r1cardo/p/17289370.html

相关文章

  • 有关IOS内存读写冲突
    有关IOS内存读写冲突在写内存相关代码时,获取已使用内存代码中报错lethostPort:mach_port_t=mach_host_self()varhost_size=mach_msg_type_number_t(MemoryLayout<vm_statistics_data_t>.stride/MemoryLayout<integer_t>.stride)varpagesize:vm_siz......
  • IOS多线程之NSOperation(1)
    IOS多线程之NSOperation(1)NSOperation是OC语言中基于GCD的面向对象的封装;提供了一些用GCD不好实现的功能;线程的生命周期由系统自动管理。NSOperation需要和NSOperationQueue配合使用来实现多线程方案。单独使用NSOperation的话,它是属于同步操作,并不具备开......
  • iOS - 利用 UIBezierPath 绘制圆弧
    iOS-利用UIBezierPath绘制圆弧APIUIBezierPath绘制圆弧主要利用以下方法:openfuncaddArc(withCentercenter:CGPoint,radius:CGFloat,startAngle:CGFloat,endAngle:CGFloat,clockwise:Bool)方法中各参数含义:center:圆心radius:半径startAngle:开始弧度endAn......
  • IOS实现水波纹
    IOS实现水波纹需要实现一个水波纹效果其实就是画两个正弦函数或者余弦函数的layer在view上面,根据屏幕刷新率来重绘,更新其左右偏移量来让其看起来是在左右移动具体实现定义两个layer,用不同的颜色填充lazyvarfrontLayer:CAShapeLayer={lettempV=CAShap......
  • IOS颜色选择器
    IOS颜色选择器UIColorWellUIColorWell是一个继承UIControl的视图,它不能调整大小和UISwitch类似,大小大约是44*44。点击可弹出一个选择颜色的弹窗因为是继承UIControl所以可以添加UIControlEventValueChanged类型的Event事件去监听颜色改变///Setstheselectedcoloron......
  • 常用的富文本编辑器统计
    Kindeditor的富文本编辑器百度UMeditor编辑器Tinymce富文本编辑器Simditor富文本编辑器jq22搜索Summernote富文本编辑器......
  • 黑马程序员高端iOS培训:苹果一条公告搅混了大家的脑洞
         正文前面,先说点正经的。苹果公司在北京时间8月30日凌晨正式向媒体发出邀请函,宣布将于北京时间9月8日凌晨1点在旧金山的比尔-格雷厄姆市政礼堂举行苹果秋季新品发布会。此次邀请函的主题为“Seeyouonthe7th”。     正经的说完了,不正经的要开始说了。或许是天......
  • HDOJ1017 A Mathematical Curiosity
    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1017这个题目其实挺坑的。首先是N,应该挺多人纠结过这个N,N其实是blocks(块),一块有未知个cases。一个块的结束标志是0,0。然后是PE的问题,空格、空行,我也是被坑的好惨。这里应该是每个块之间有一个空行!也就是说,最后一个块是不......
  • JavaWeb——HTML基本标签详解及案例实战(文件标签、文本标签、图片标签、列表标签、链
    目录1、文件标签2、文本标签3、图片标签4、列表标签5、链接标签6、块标签7、语义化标签8、表格标签9、综合案例上一节介绍了HTML的基本概念,和基本语法,本节介绍下HTML的基本标签和表单标签。这部分学习可以参照W3Cschool,一个很好的网站。1、文件标签文件标签是构成HTML最基本的标签,......
  • python3里面实现将日志文件写入当前脚本运行的文本中
    在Python3中,可以使用logging模块来实现将日志写入本地文本文件中。下面是一个简单的示例代码:importlogging#配置logging模块logging.basicConfig(level=logging.DEBUG,filename='example.log',format='%(asctime)s%(leve......