UITextView实现图文混排效果
用UITextView實(shí)現(xiàn)圖文混排效果的展示,首先要禁用UITextView的編輯功能,將屬性editable設(shè)置為NO
1.首先創(chuàng)建一個(gè)NSTextAttachment對(duì)象,這個(gè)對(duì)象有一個(gè)image屬性,可以將需要顯示的圖片賦值給這個(gè)屬性
NSTextAttachment *attachment = [[NSTextAttachment alloc] init]; attachment.image = [UIImage imageNamed:@"imageName"];2.將attachment對(duì)象轉(zhuǎn)換成屬性字符串,以便之后將圖片顯示在文本中
NSMutableAttributedString *attachmentString = (NSMutableAttributedString *)[NSAttributedString attributedStringWithAttachment:attachment];3.將圖片插入文本
[_textView.textStorage appendAttributedString:attachmentString];如果圖片插入的位置不是在文本末尾的話,可以用 insertAttributedString: atIndex: 這個(gè)方法
4.圖片的顯示默認(rèn)是按照原大小進(jìn)行渲染,如果對(duì)圖像大小有要求,需要調(diào)整圖像大小的話,可以創(chuàng)建一個(gè)NSTextAttachment的子類,然后實(shí)現(xiàn)NSTextAttachmentContainer協(xié)議的這個(gè)方法
- (CGRect)attachmentBoundsForTextContainer:(NSTextContainer *)textContainer proposedLineFragment:(CGRect)lineFrag glyphPosition:(CGPoint)position characterIndex:(NSUInteger)charIndex;這個(gè)方法會(huì)返回一個(gè)attachment的CGRect,如果需要調(diào)整attachment的大小,可以在這里面進(jìn)行,也可以在里面限制attachment的大小
5.對(duì)于UITextView中的圖片,如果想要點(diǎn)擊效果的話,可以實(shí)現(xiàn)UITextViewDelegate這個(gè)協(xié)議里面的方法
- (BOOL)textView:(UITextView *)textView shouldInteractWithTextAttachment:(NSTextAttachment *)textAttachment inRange:(NSRange)characterRange;具體的點(diǎn)擊效果可以寫在上面這個(gè)方法中,最后的返回值為YES,則圖片可以被復(fù)制、保存,返回值NO則不能,但是都不會(huì)影響返回之前的其他操作
6.對(duì)文字和圖片的其他展示效果,可以用NSAttributedString來實(shí)現(xiàn)
7.如果想要實(shí)現(xiàn)實(shí)時(shí)編輯長(zhǎng)圖文的話,同樣也是先將圖片轉(zhuǎn)成attachment,然后在進(jìn)行相同的操作就可以了,但是要先將textView的editable屬性改成YES
下面是我做好的圖文混排效果展示
轉(zhuǎn)載于:https://www.cnblogs.com/troy94/p/5256151.html
總結(jié)
以上是生活随笔為你收集整理的UITextView实现图文混排效果的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#迭代器、装箱/拆箱、重载等
- 下一篇: linux第9天 UDP