本篇介紹coretext中的圖文混排,這里暫用靜態(tài)的內(nèi)容,即在文本中某一固定位置插入圖片,而不是插入位置是根據(jù)文本內(nèi)容動(dòng)態(tài)插入的(要實(shí)現(xiàn)這一效果需要寫(xiě)一個(gè)文本解析器,將原信息內(nèi)容解析為某些特定格式的結(jié)構(gòu)來(lái)標(biāo)示出特定的類(lèi)型(比如文字、圖片、鏈接等),然后按照其結(jié)構(gòu)中的屬性配置,生成屬性字符串,之后渲染到視圖中)。

這部分的思路參考唐巧大神的blog。

在第一篇介紹過(guò)coretext是離屏渲染的,即在將內(nèi)容渲染到屏幕上之前,coretext已完成排版工作。coretext排版的第一步是組織數(shù)據(jù),即由原始字符串通過(guò)特定的配置來(lái)得到屬性字符串。實(shí)現(xiàn)在文字中插入圖片的大部分工作都是在這一步中完成的。

大體思路是:首先將原始純文本數(shù)據(jù)通過(guò)預(yù)定義的配置生成相應(yīng)的屬性字符串A,然后生成一個(gè)字符作為占位符(繪制時(shí)在這個(gè)占位符中填充圖片),根據(jù)特定的配置生成屬性字符串B,然后將B插入到A相應(yīng)位置,最后將合并后的A和圖片渲染到視圖中。

具體步驟如下:

一、創(chuàng)建存儲(chǔ)A的數(shù)據(jù)結(jié)構(gòu)CoreTextData與存儲(chǔ)B的數(shù)據(jù)結(jié)構(gòu)CTImgData

二、生成屬性字符串A

三、生成屬性字符串B

四、檢測(cè)圖片位置,以便后續(xù)對(duì)圖片操作進(jìn)行處理

 

1、創(chuàng)建存儲(chǔ)A的數(shù)據(jù)結(jié)構(gòu)CoreTextData與存儲(chǔ)B的數(shù)據(jù)結(jié)構(gòu)CTImgData

在實(shí)際開(kāi)發(fā)中我們需要一個(gè)結(jié)構(gòu)來(lái)存儲(chǔ)排版和業(yè)務(wù)的一些數(shù)據(jù),首先介紹CoreTextData: