RZRichTextView
導入工程
pod 'RZRichTextView'
需要使用的地方
#import <RZRichTextView/RZRichTextView.h>
RZRichTextView 繼承自UITextView
-
富文本編輯器,支持html與文本相互轉換,支持的功能如下
- 插入圖片
- 撤銷
- 恢復
- 字體 (大小、顏色、背景色、粗體、斜體、描邊)
- 下劃線
- 刪除線
- 上標
- 下標
- 段落樣式(對齊、縮進、間距)
- 文字拉伸
- 陰影
- 鏈接(文字、圖片)
插入圖片到富文本之后,在轉換成HTML標簽之前,需要將圖片上傳至服務器得到URL,最后將URL替換圖片之后,生成HTML標簽
- 如果要對插入的圖片進行處理,請實現
// 全局的圖片的處理
RZRichTextConfigureManager.manager.rz_shouldInserImage = ^UIImage * _Nullable(UIImage * _Nullable image) {
return image;
}
** 如果開發者需要代碼預填入內容,或將html標簽解析成富文本重新寫入到文本中,繼續編輯,請參考RZColorful, **
UI 展示
工具條
image5.jpeg
段落樣式設置
image1.jpeg
字體描邊屬性設置
image2.jpeg
多個鏈接時,編輯
image3.jpeg
鏈接的編輯
image4.jpeg
使用RZRichTextView文本框
/**
獲取輸入框中的所有圖片
@return 按照圖片插入順序排列
*/
- (NSArray <UIImage *> *)rz_rictTextImages;
/**
將富文本內容轉換成HTML標簽語言 urls需與圖片順序、數量一致(倒敘方式插入,缺失可能導致圖片順序不準確)
@param urls 圖片的鏈接,如果有圖片,則請將圖片先上傳至自己的服務器中,得到地址。然后在轉換成HTML時,urls圖片順序將與[- (NSArray <UIImage *> *)rz_rictTextImages]方法得到的圖片順序一致
@return HTML標簽string。
*/
- (NSString *)rz_codingToHtmlWithImageURLS:(NSArray <NSString *> *)urls;
使用NSAttributedString
包含文件
#import <RZColorful/RZColorful.h> // #import <RZColorful/NSAttributedString+RZColorful.h>
在NSAttributedString中
pragma mark - HTML 富文本互換
// 將html轉換成 NSAttributedString
+ (NSAttributedString *)htmlString:(NSString *)html;
// 獲取富文本中的圖片 用于上傳服務器
- (NSArray <UIImage *> *)rz_images;
/**
將富文本編碼成html標簽,如果有圖片,用此方法
@param urls 圖片的url,url需要先獲取圖片,然后自行上傳到服務器,最后按照【- (NSArray <UIImage *> *)images;】此方法得到的圖片順序排列url
@return HTML標簽
*/
- (NSString *)rz_codingToHtmlWithImagesURLSIfHad:(NSArray <NSString *> *)urls;
/**
將富文本完整的code成html標簽,(此方法如果富文本中有圖片,則圖片將被丟失) 有圖片時,請用[rz_codingToHtmlWithImagesURLSIfHad]方法
@return HTML標簽語言
*/
- (NSString *)rz_codingToCompleteHtml;
自定義RZRichTextView的功能
- 富文本主要是對NSAttributedString的屬性進行各式設置,然后和text合并起來,最后形成富文本
自定義 工具條
image5.jpeg
-
工具條是一個UICollectionView,所以要自定義功能,需要實現以下四個方法
- 1.cell 注冊
// [RZRichTextConfigureManager manager] /** 自定義 注冊的鍵盤上的工具條的cell */ - (void)registerRZRichTextAttributeItemClass:(Class)classNa forAccessoryItemCellWithIdentifier:(NSString *)identifier;
- 2.dataSouce
// [RZRichTextConfigureManager manager] /** 鍵盤上的工具條功能數組,可新增、刪除、交換順序 如果要添加自定義的功能,添加的RZRichTextAttributeType 請盡量從100以后添加, */ @property (nonatomic, copy) NSMutableArray <RZRichTextAttributeItem *> *rz_attributeItems;
- 3.cell的初始化
// [RZRichTextConfigureManager manager] /** 根據item,可自定義鍵盤工具欄的功能cell 不需要自定義時,return nil; (在工具條刷新的時候會調用)*/ @property (nonatomic, copy) UICollectionViewCell *(^cellForItemAtIndePath)(UICollectionView *collectionView, NSIndexPath *indexPath, RZRichTextAttributeItem *item);
- 4.cell的點擊事件
// [RZRichTextConfigureManager manager] /** 點擊了某個功能, 需要自定義處理時,返回YES*/ @property (nonatomic, copy) BOOL(^didClickedCell)(RZRichTextView *textView, RZRichTextAttributeItem *item);
以上修改是針對全局的RZRichTextView的功能
在配置了全局的RZRichTextView的功能,也可以在RZRichTextView初始化之后,單獨對某一個RZRichTextView進行定制,RZRichTextView同樣有2、3、4方法,當實現了之后,[RZRichTextConfigureManager manager]的2、3、4全局的自定義方法將以RZRichTextView為主
自定義方法,是對[RZRichTextView rz_attributedDictionays]的字典里的內容的修改,所以如需自定義,請在4.cell的點擊事件中進行處理
完成rz_attributedDictionays修改之后,需要
// RZRichTextView
/**
刷新工具條的cell
*/
- (void)rz_reloadAttributeData;