iOS 富文字編輯工廠, 讓書寫更簡便

2021-08-10 17:46:40 字數 3534 閱讀 8197

由於最近常用富文字, 在編輯乙個富文字時需要操作很多的屬性, 書寫起來很不方便. 所以我將這些相關屬性整理並使用鏈式方式將它簡化了一下. 效果請看下面demo.

專案工程 實現很簡單, 我嘴太笨, 這裡就不介紹了, 如有興趣直接看原始碼吧. 同時可以通過cocoapods來使用它.

pod 'sjattributesfactory'
附關於富文字的一些屬性.

之前:

// 文字字典

nsdictionary *titledict = @;

nsdictionary *spacingdict = @;

// 文字

nstextattachment *attachment = [[nstextattachment alloc] init];

attachment.image = image;

attachment.bounds = cgrectmake(0, 0, imagew, imageh);

nsattributedstring *imagetext = [nsattributedstring attributedstringwithattachment:attachment];

// 換行文字

nsattributedstring *linetext = [[nsattributedstring alloc] initwithstring:@"\n\n" attributes:spacingdict];

// 按鈕文字

nsattributedstring *text = [[nsattributedstring alloc] initwithstring:title attributes:titledict];

// 合併文字

nsmutableattributedstring *attm = [[nsmutableattributedstring alloc] initwithattributedstring:imagetext];

現在:

之前:

nsstring *str = @"故事:可以解釋為舊事、舊業、先例、典故等涵義,同時,也是文學體裁的一種,側重於事情過程的描述,強調情節跌宕起伏,從而闡發道理或者價值觀。";

nsmutableattributedstring *attrm = [[nsmutableattributedstring alloc] initwithstring:str];

[attrm addattribute:nsfontattributename

value:[uifont boldsystemfontofsize:14]

range:nsmakerange(0, 3)];

nsmutableparagraphstyle *style = [nsmutableparagraphstyle new];

style.firstlineheadindent = 8;

style.headindent = [[attrm attributedsubstringfromrange:nsmakerange(0, 3)]

boundingrectwithsize:cgsizemake(cgfloat_max, cgfloat_max)

options:nsstringdrawinguseslinefragmentorigin | nsstringdrawingusesfontleading

context:nil].size.width + style.firstlineheadindent;

style.tailindent = -8;

[attrm addattribute:nsparagraphstyleattributename

value:style

range:nsmakerange(0, str.length)];

現在:

[sjattributesfactory alteringstr:@"故事:可以解釋為舊事、舊業、先例、典故等涵義,同時,也是文學體裁的一種,側重於事情過程的描述,強調情節跌宕起伏,從而闡發道理或者價值觀。" task:^(sjattributesfactory * _nonnull worker) ];

之前:

nsstring *price = @"$ 999";

nsmutableattributedstring *attrm = [[nsmutableattributedstring alloc] initwithstring:price];

nsrange range = nsmakerange(0, price.length);

[attrm addattribute:nsfontattributename

value:[uifont systemfontofsize:40]

range:range];

[attrm addattribute:nsunderlinestyleattributename

value:@(nsunderlinebyword | nsunderlinepatternsolid | nsunderlinestyledouble)

range:range];

[attrm addattribute:nsunderlinecolorattributename

value:[uicolor yellowcolor]

range:range];

[attrm addattribute:nsstrikethroughstyleattributename

value:@(nsunderlinebyword | nsunderlinepatternsolid | nsunderlinestyledouble)

range:range];

[attrm addattribute:nsstrikethroughcolorattributename

value:[uicolor redcolor]

range:range];

現在:

ios富文字編輯

最近的專案要用到富文字編輯來實現其中的修改文件功能。先是在github是找了一些editor,效果都不是很滿意,多是使用coretext來實現的,但attribute text與html的轉換十分繁鎖,所找到的控制項只有外讀時轉化為html的方法,而沒有載入時轉換到attribute text的方法...

富文字編輯

關於字型方面,見 font。下面就是找到的一些免費開源的富文字外掛程式比較。以下僅供參考。文件上說,quill 是乙個為相容性和可擴充套件性而構建的所見即所得的現代編輯器。截至 2019.12.12,仍然處於有人維護狀態,結合上面的考慮點,有下面的一些個人體會。好的方面 不好的方面 文件上說,sum...

tinymce vue 富文字編輯

用texterea最多支援換行,如果文字資訊想要更加豐富一些,比如增加格式樣式,比如增加,textarea就愛莫能助了 在網上搜尋了一番,發現tinymce是比較方便好用的一款富文字編輯 官網1.富文字rich text editor在增刪查改四個操作下,只有增和改是需要出現具體的工具欄的,在檢視的...