开篇 项目有一个客服反馈功能,用到的是聊天列表的形式,这就免不了计算字符串的宽高,由于要给字符串加间距,没办法,只能用 NSAttributedString 所以要计算NSAttributedString...的长宽 计算NSString宽高 计算NSString宽高很简单,代码如下: //返回字符串所占用的尺寸. - (CGSize)sizeWithFont:(UIFont *)font maxSize:(...NSStringDrawingUsesLineFragmentOrigin attributes:attrs context:nil].size; } 参数解读 font 是当前字符串的字体...(包含大小信息) maxSize 是一个最大的距离:如我最大的宽度只让他为200,高度不限,则传入: CGSizeMake(200 , CGFLOAT_MAX) 计算NSAttributedString...(包含大小信息) text:将要计算的�字符串 needWidth:将要计算的最大宽度 lineSpacing:行间距大小 当然关于 NSAttributedString 的设置还有很多,不一一列举了
NSAttributedStringKey.foregroundColor:UIColor.darkGray //设置背景色 NSAttributedStringKey.backgroundColor:UIColor.clear //设置基准位置 (正值上偏...:attr8]; 图文混排 //聊天的表情文字混排 //设置文本附件,取值为NSTextAttachment对象,常用于文字的图文混排 NSString *str9 = @"文字的图文混排\n";...NSBaselineOffsetAttributeName 设置基线偏移值 取值为NSNumber (float),正值上偏,负值下偏 */ NSString *str11 = @"添加基线偏移值...用来确定对应的操作。...return YES; } 注意: 实现textView的代理,否则调不到回调方法。 设置textView的 editable 属性为 NO,在可编辑的状态下是不可点击的。
NSAttributedString根据宽度返回每行文案 #import #import NS_ASSUME_NONNULL_BEGIN...@interface NSAttributedString (MOLine) /// 根据width返回每一行的内容 /// @param width 纯文字宽度,需要删除容器内边距 - (nullable...NSArray NSAttributedString *> *)qnb_separatedLinesWithWidth:(CGFloat)width; @end #import "NSAttributedString...+MOLine.h" #import @implementation NSAttributedString (MOLine) /// 根据width返回每一行的内容.../// @param width 纯文字宽度,需要删除容器内边距 - (nullable NSArray NSAttributedString *> *)qnb_separatedLinesWithWidth
= NSAttributedString(attachment: attchimage) //注意:每替换一次,原有的位置发生改变,下一轮替换的起点需要重新计算!...:paragraphStyle, NSAttributedString.Key.font : UIFont.systemFont(ofSize: 16)], range: NSRange(location...1、列表页cell中的imageView的大小是固定平均分配的,而每张图片的大小和比例都是不一样的,为了保证图片不变形,按比例只展示图片的中心部分,怎么做哪?...捏合放大缩小动画是由继承于UIScrollView的子类SLPictureZoomView完成;触摸点双击放大是根据触摸点在图片的位置和屏幕上的位置得到放大后的触摸点相对位置来实现的;拖拽过渡转场是根据手指在屏幕上的移动距离来调整...三、界面流畅度优化 网上关于界面流畅度优化的好文章还是挺多的,我在这里只记录下本文示例中用到的部分优化策略,基本上FPS在60左右, 详情可以看代码: 1、cell高度异步计算和缓存 2、富文本异步正则匹配和结果缓存
在OS X v10.6版本之前,NSTableView中行数据载体视图必须是NSCell的子类,之后版本的OS X支持开发者创建基于View的TableView视图,同样也支持基于Cell的TabelView...视图 Cell-Base是OS X早起版本中常用的构造TabelView的方式,其中每一行的数据载体都必须是NSCell的子类。...shouldEditTableColumn:(nullable NSTableColumn *)tableColumn row:(NSInteger)row{ return YES; } //设置鼠标悬停在cell上显示的提示文本...NSInteger)row mouseLocation:(NSPoint)mouseLocation{ return @"tip"; } //当列表长度无法展示完整某行数据时 当鼠标悬停在此行上...显示的提示文案 */ - (NSString *)tableView:(NSTableView *)tableView toolTipForCell:(NSCell *)cell rect:(NSRectPointer
想必都看过WWDC2021的Session了,Session原版视频依然是最有效的get新特性的渠道,iOS15多的特性就不说了,我就整理了我在适配iOS15路上的一些更改和调整。...iOS15上是无效的 旧代码 navigationBar.setBackgroundImage(UIColor.clear.image, for: .default) // 导航栏背景,主题色是绿色 navigationBar.barTintColor...: UIFont.systemFont(ofSize: 18), NSAttributedString.Key.foregroundColor: UIColor.white ] run起来后发现...UINavigationBarAppearance,如今在iOS15上失效,所以对于呈现的问题,做如下适配: 新代码 ...... if #available(iOS 15, *) { let...: UIFont.systemFont(ofSize: 18), NSAttributedString.Key.foregroundColor: UIColor.white ]
源码很有学习意义 导入工程 自动, pod 'DZNEmptyDataSet' 手动 https://github.com/dzenbot/DZNEmptyDataSet 下载解压,Source文件夹下的文件拖入工程...self.tableView.emptyDataSetSource = self; self.tableView.emptyDataSetDelegate = self; //这行代码必须加上,可以去除tableView的多余的线...,否则会影响美观 self.tableView.tableFooterView = [UIView new]; } 满足代理方法,可以分别配置,都是可选的 空白页图片...alloc] initWithString:text attributes:attributes]; } - (NSAttributedString *)descriptionForEmptyDataSet...alloc] initWithString:text attributes:attributes]; } 按钮文本或者背景样式 - (NSAttributedString
在Foundation框架中,我们可以使用 NSAttributedSubstringFromRange 方法来从一个 NSAttributedString 对象中获取指定范围的子字符串。...例如,假设我们有一个 NSAttributedString 对象 attributedString ,我们想要获取该对象中从位置 startIndex 开始,长度为 length 的子字符串,可以使用如下代码...: NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:@"Hello World" attributes...NSAttributedString 对象。...我们可以继续使用该对象进行其他操作,比如设置不同的属性或者将其显示在界面上。 本文共 131 个字数,平均阅读时长 ≈ 1分钟
项目需求就是类似于实现富文本功能,可以换行,左右对齐,修改字体颜色等,选择这个的原因不光因为它可以实现以上功能,他还可以把输入好的文字转换成html。...直接上代码如下: NSString *htmlString =self.model.buyKnow; NSAttributedString *attrStr = [[NSAttributedString...,颜色,字体为显示做改变,我一直改变的是富文本希望在此基础上实现。...here">黑色样式无样式 这样就直接实现了改变NSAttributedString的默认字体颜色的问题了!...有更好的办法,欢迎指教哈~
关于行高 lineHeight 如果你只关心 iOS 设备上的文本展示效果,那么看到这里就已经够了。但是我需要的是 iOS 和 Android 展现出一模一样的效果,所以光有行间距是不能满足需求的。...主要的原因在前言也提到了,Android 设备上的文字上下默认留白(上一节图中蓝色和红色重叠的部分)和 iOS 设备上的是不一致的: ?...左侧是 iOS 设备,右侧 Android 设备,可以看到同样是显示 20 号的字体,安卓的行高会偏高一些。在不同的 Android 设备上使用的字体不一样,可能还会出现更多的差别。...如果不想办法抹平这差别,就不能真正意义上实现双端一致了。...虽然文字的渲染上会有细微的差别,但是布局上的差别将被完全的抹除。
短视频系统中评论功能的分量在短视频功能里可谓是举足轻重,下面简单介绍下,短视频系统中的评论功能的实现方式: 评论分为对视频的评论和对评论的回复两部分: 对于评论列表大家再熟悉不过了,就是一个tableview...罢了,相信刚入门的技术也可以实现。...技术的关键在于对评论的回复,我们使用了tableview的嵌套,即:在评论的cell中创建回复的tablview,使用代理功能来实现对数据和UI界面的精准控制,下面是实现的具体方式: _contentL.attributedText...= [[NSTextAttachment alloc] init]; UIImage *image2 = [UIImage imageNamed:@"relpay_三角上....关于更多短视频系统功能的介绍可以关注我们的账号,我们会持续更新关于短视频功能介绍。
在iOS6中,系统为UILabel,UITextView等这类文本渲染控件引入了NSAttributedString属性,有了NSAttributedString这个类,创建灵活多彩的文本控件变得十分轻松...NSTextAttachment类并不直接参与富文本的渲染与布局,渲染和布局依然由NSAttributedString类来完成,NSAttributedString类中提供了方法将NSTextAttachment...所描述的内容转换为NSAttributedString示例。...) NSFileWrapper *fileWrapper; 结合UITextView可以为NSAttributedString属性字符串添加超链接,在代码回调中监听此超链接的回调可以获取NSTextAttachment...attributedStringWithAttachment:attach]]; //为NSTextAttachment转换为的NSAttributedString添加超链接 [att
关于富文本能做什么我就不多说了,我们一般遇到的图文混排等,这个还是很好做到的。...取值为 NSString 对象,目前只有图版印刷效果可用: NSBaselineOffsetAttributeName 设置基线偏移值,取值为 NSNumber (float),正值上偏...*)attrString; - (void)insertAttributedString:(NSAttributedString *)attrString atIndex:(NSUInteger)loc...)range; - (void)setAttributedString:(NSAttributedString *)attrString; - (void)beginEditing; - (void)...*imageStr = [NSAttributedString attributedStringWithAttachment:attach]; /* 将这个图片直接添加到attStr后面 */
AttributedString——不仅仅让文字更漂亮 在WWDC 2021上,苹果为开发者带来了有一个期待已久的功能——AttributedString,这意味着Swift开发人员不再需要使用基于Objective-C...的NSAttributedString来创建样式化文本。...: •将UIKit或AppKit控件包装成SwiftUI控件,在其中显示NSAttributedString•通过代码将NSAttributedString转换成对应的SwiftUI布局代码•使用SwiftUI...AttributedString vs NSAttributedString AttributedString基本上可以看作是NSAttributedString的Swift实现,两者在功能和内在逻辑上差别不大...AttributedString中基本不采用NSAttributedString如下的属性访问方式,极大的减少出错几率 // 可能出现类型不匹配let attributes: [NSAttributedString.Key
这时需要将"等类似的字符转化为HTML中的\等。还有<和>等本应该代表标签符号的字符,也需要换成等。...@"<" goes to @"<" not @"<" return string; } 需求2 将HTML字符串转化为NSAttributedString富文本字符串...,并用UILabel,UITextview的attributedText属性加载富文本。...- (NSAttributedString *)attributedStringWithHTMLString:(NSString *)htmlString { NSDictionary *options...) }; NSData *data = [htmlString dataUsingEncoding:NSUTF8StringEncoding]; return [[NSAttributedString
二、CoreText相关问题 CTFramesetter是NSAttributedString的CF对象,可以直接强转; CTFrame是排版数据,由CTFramesetter生成; NSAttributedString...SSLayoutPageData,每个对象中都有一个CTFrameRef,代表一页的排版结果;最终SSPageView将其CTFrameRef渲染到到屏幕上。...HTML的字符串可以通过系统API转成NSAttributedString,再通过其string属性,可以访问到NSString; /** * html字符串转富文本 */ - (NSAttributedString...4、分页计算 分页计算的核心是拿到NSAttributedString和pageSize,按照页面大小进行排版,分别得到每页的字符串范围,最终以NSRange的方式返回,举例: ( "NSRange...,减少计算量 NSAttributedString * subString = [attributeStr attributedSubstringFromRange:NSMakeRange
实现思路: 1.输入显示试图和系统键盘的出现和隐藏。 2.用UILabel和UITextField实现输入框。...if (i < text.length - 1) { //特殊字符不居中显示,设置文本向下偏移 NSAttributedString...* att1 = [[NSAttributedString alloc] initWithString:@"*" attributes:@{NSBaselineOffsetAttributeName:...if (i < text.length) { //特殊字符不居中显示,设置文本向下偏移 NSAttributedString...* att1 = [[NSAttributedString alloc] initWithString:@"*" attributes:@{NSBaselineOffsetAttributeName:
话不多说,下面开始正文(注:本文对应的Demo放在Github上:github.com/VernonVan/P…)。...市面上的表情键盘的分析 首先来看一下市面上主要的几个APP上的表情键盘,平时使用的时候不会去关注细节,这次特意去使用了表情键盘,发现各个APP的体验还是有优有劣的。...在iOS11上,UITextView上的NSTextAttachment(表情)默认可以进行拖拽交互,但是却导致拖动光标时很容易触发这个交互(图示可以查看上面说到的微博国际版中的误触)。...也就是说,我们设置到输入框的NSAttributedString中的每一个NSTextAttachment都有一个"隐藏的"属性—表情的文本描述,这里对NSAttributedString进行拓展就能实现...NSAttributedString指定range的纯文本。
引言 原文: https://kunnan.blog.csdn.net/article/details/114015528 应用场景:使用原生视图UILabel显示服务端返回的带有HTML标签的内容 demo...//kunnan.blog.csdn.net/微信公众号:iOS逆向“订阅”一次 ,享受终身服务的快乐...专注《iOS应用逆向与安全》(包括iOS基础)"; NSAttributedString *attStr = [[...NSAttributedString alloc] initWithData:[html dataUsingEncoding:NSUnicodeStringEncoding] options:@{NSDocumentTypeDocumentAttribute
width: imageWidth, height: imageHeight) let imageStr = NSAttributedString...(attachment: attach) attributedStr.append(imageStr) // 增加图片后与文字间距 let spacingStr = NSAttributedString...(string: " ") attributedStr.append(spacingStr) // 昵称 let nameStr = NSAttributedString(string: "莫小言:jKf...的 originY。...:iOS_UIFont的Attributes解析 修改后运行效果如下: