首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

iOS文本布局探讨之三——使用TextKit框架进行富文本布局

在较低版本的iOS系统,要进行富文本排版十分困难。...在iOS6,系统为UILabel,UITextView等这类文本渲染控件引入了NSAttributedString属性,有了NSAttributedString这个类,创建灵活多彩的文本控件变得十分轻松...首先,iOS7新添加了一类NSTextAttachment,从类名理解它是一个文本附件,其实也正是如此,NSTextAttachment类可以向文本添加一些附件,这有些向邮件系统,寄信者可以向邮件添加附件一同发送出去...NSAttributedString [attri insertAttributedString:att atIndex:15]; [attri insertAttributedString...先看NSTextAttachment类的一些常用属性与方法: //这个初始化方法用于创建携带任意数据的文本附件 - (instancetype)initWithData:(nullable NSData

2K20

AttributedString——不仅仅让文字更漂亮

AttributedString基本不采用NSAttributedString如下的属性访问方式,极大的减少出错几率 // 可能出现类型不匹配let attributes: [NSAttributedString.Key...比如: •用NSAttributedString解析HTML,然后转换成AttributedString调用•用AttributedString创建类型安全的字符串,在显示时转换成NSAttributedString...的属性也将一并被转换 视图 在属性字符串,属性和文本可以被独立访问,AttributedString提供了三种视图方便开发者从另一个维度访问所需的内容。...自定义属性 使用自定义属性,不仅有利于开发者创建更符合自身要求的属性字符串,而且通过在Markdown文本添加自定义属性信息,进一步降低信息和代码的耦合度,提高灵活度。...实例1:创建id属性 本例我们将创建一个名称为id的属性。

3.8K40

Swift 小仿微博列表

[爱心] 富文本是由原始字符串经过一系列的正则匹配到目标字符串后,再经过一系列的字符串高亮、删除、替换等处理得到的 注意:每一个匹配项完成字符串处理后可能会改变原有字符串的NSRange,进而导致另一个匹配项的...= NSAttributedString(attachment: attchimage) //注意:每替换一次,原有的位置发生改变,下一轮替换的起点需要重新计算!...:paragraphStyle, NSAttributedString.Key.font : UIFont.systemFont(ofSize: 16)], range: NSRange(location...matches(in:title, options:[], range: NSRange(location: 0, length: NSAttributedString(string: title).length...1、列表页cell的imageView的大小是固定平均分配的,而每张图片的大小和比例都是不一样的,为了保证图片不变形,按比例只展示图片的中心部分,怎么做哪?

1.4K30

六天完成一个简单iOS App - 第二天

label换行 另外如果xib不是我们创建controller同时创建的,需要做两步操作与之前创建好的controller创建关联。 第一步: ?...第一步与controller创建关联 第二步: ? 与view创建关联 如果xib是在创建controller的同时就创建好了的,系统会自动帮我们做这两件事。 二....如果button是从storyboard或者xib加载会调用aweakfromnib方法,我们可以在aweakFromNib对控件进行一些统一的设置,在layoutSubviews设置控件内内容的位置...:second]; // 3 - 图片后部分 NSAttributedString *third = [[NSAttributedString alloc] initWithString:@"哈哈哈"...]; [attributedText appendAttributedString:third]; label.attributedText = attributedText; 一个Label显示多行不同字体的文字

2.1K50

短视频APP源码系统评论功能是如何实现的

短视频系统评论功能的分量在短视频功能里可谓是举足轻重,下面简单介绍下,短视频系统的评论功能的实现方式: 评论分为对视频的评论和对评论的回复两部分: 对于评论列表大家再熟悉不过了,就是一个tableview...技术的关键在于对评论的回复,我们使用了tableview的嵌套,即:在评论的cell创建回复的tablview,使用代理功能来实现对数据和UI界面的精准控制,下面是实现的具体方式: _contentL.attributedText...alloc] init];                 UIImage *image2 = [UIImage imageNamed:@"relpay_三角上.png"];                 NSAttributedString...                    attach2.bounds = CGRectMake(0, -4, 15, 15);                     imageString2 =   [NSAttributedString...= [[NSTextAttachment alloc] init];     UIImage *image = [UIImage imageNamed:@"relpay_三角下.png"];     NSAttributedString

75020

iOS crash分析实践

耗时过长 业务需要把html格式的字符串转成NSAttributedString,原来HTML转码成NSAttributedString使用的是系统自带的方法: - (nullable instancetype...解决方案1、转码前,手动过滤掉的标签; 解决方案2、改用DTCoreText的html转NSAttributedString; 使用一个不熟悉的系统API接口,最好花时间阅读下接口说明;...经验总结: 1、getter实现应该简单化,尽量少的去设置很多属性和创建block等,仅仅作为懒加载去创建对象; 2、dealloc方法不要访问getter和setter的方法; 思考题,为什么对象...dealloc创建对象的weak指针会crash?...通过代码分析,可以知道是BDRpcAsyncOperation持有了某个block;该block持有了其他对象(因为block访问了该对象)。

1.7K20

小说阅读器的设计和实现

前言 19年做了一个小说阅读器,特此介绍阅读器设计,还有实现过程的一些坑。...二、CoreText相关问题 CTFramesetter是NSAttributedString的CF对象,可以直接强转; CTFrame是排版数据,由CTFramesetter生成; NSAttributedString...frameSetter = CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef) subString); // 根据富文本创建排版类...CTFrameRef frameRef = CTFramesetterCreateFrame(frameSetter, CFRangeMake(0, 0), bezierPath.CGPath, NULL); // 创建排版数据...vc在赋值给UIPageViewController之后,就不应该修改; 延伸出来的翻页逻辑优化 UIPageVC在使用过程(动画过程),不可调用这个方法,否则滑动的手势会取消,出现闪动的效果。

3.9K20

iOS坐标系探究

正文 我们先从一段最简单的代码入手,在drawRect显示一个普通的UILabel; 为了方便判断,我把整个view的背景设置成黑色: - (void)drawRect:(CGRect)rect {...CTFrameDraw(frameRef, context); } 首先用NSString创建一个富文本,然后根据富文本创建CTFramesetterRef,结合CGRect生成的UIBezierPath...坐标系概念 在iOS绘制图形必须在一个二维的坐标系中进行,但在iOS系统存在多个坐标系,常需要处理一些坐标系的转换。...用我们在Windows常用的画图来参考,当我们使用画笔在白板写字时,图形上下文就是画笔的属性设置、白板大小、画笔位置等等。...iOS,每个图形上下文都会有三种坐标: 1、绘制坐标系(也叫用户坐标系),我们平时绘制所用的坐标系; 2、视图(view)坐标系,固定左上角为原点(0,0)的view坐标系; 3、物理坐标系,物理屏幕的坐标系

2.8K30

史上最全的iOS之UITextView实现placeHolder占位文字的N种方法

前言 iOS开发,UITextField和UITextView是最常用的文本接受类和文本展示类的控件。UITextField和UITextView都输入文本,也都可以监听文本的改变。...这就导致了UITextView可以多行展示内容,并且还可以像UIScrollView一样滚动。而UITextField只能单独的展示一行内容。...而开发,我们经常会遇到既要占位文字,又要可以多行展示并且可以滚动的控件,单纯的UITextField或者UITextView都不能满足这种产品上的需求。...// 创建textView UITextView *textView =[[UITextViewalloc]initWithFrame:CGRectMake(20,70,SCREEN.width-40,100...placeholder"]){ textView.text=@""; textView.textColor=[UIColor blackColor]; } } 方法二 1.创建

10.1K40
领券