























本文是基于UITextView编辑时插入自定义表情-简单的图文混编写的,主要实现了在UITextView插入表情图片时,自定义表情大小的功能。
本文代码工程地址:https://github.com/zekunyan/UITextViewDIYEmojiExample

首先要明确我们要什么,很简单,就是指定NSTextAttachment在被绘制时的大小。
所以,按照这个思路,就可以去找找NSTextAttachment类的相关方法,看能不能通过继承或其他的方式改变大小。
NSTextAttachment实现了“NSTextAttachmentContainer”这个Protocol,而这个Protocol里面有如下方法:
1 | - (CGRect)attachmentBoundsForTextContainer:(NSTextContainer *)textContainer |
再看看其解释:
1 | Returns the layout bounds of the text attachment to the layout manager. (required) |
也就是说,在绘制NSTextAttachment的内容的时候,内容的“Bounds”是通过这个方法获得的。所以,可以重写这个方法,来达到我们的目的。
NSTextAttachment还有一个属性@property(nonatomic) CGRect bounds,其解释如下:
1 | Defines the layout bounds of the receiver's graphical representation in the text coordinate system. |
所以,修改这个也可以达到目的。
根据之前的定义,我们在自定义的类“EmojiTextAttachment”中再加一个保存大小的属性,如下:
1 |
|
有了“emojiSize”这个属性,我们就可以在自由的指定每个NSTextAttachment的大小。
接下来就是重写方法,不多说,见代码:
1 |
|
直接在创建表情NSTextAttachment的时候设置bounds属性即可。
增加了emojiSize属性后,我们就可以在创建表情,甚至创建后,自由的调整每个NSTextAttachment的大小。
一共只增加了十几行代码,但是效果还是不错哒~
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。