多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全I(xiàn)T社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > php框架 > codeigniter > CoreText 學(xué)習(xí)筆記

CoreText 學(xué)習(xí)筆記

來源:程序員人生   發(fā)布時(shí)間:2014-10-11 08:00:01 閱讀次數(shù):7179次


一、Coretext 與 UIWebView

基于CoreText來實(shí)現(xiàn)和基于UIWebView來實(shí)現(xiàn)相比,前者有以下好處:

  1. CoreText占用的內(nèi)存更少,UIWebView占用的內(nèi)存更多。
  2. CoreText在渲染界面前就可以精確地獲得顯示內(nèi)容的高度(只要有了CTFrame即可),而UIWebView只有渲染出內(nèi)容后,才能獲得內(nèi)容的高度(而且還需要用javascript代碼來獲取)
  3. CoreText的CTFrame可以在后臺線程渲染,UIWebView的內(nèi)容只能在主線程(UI線程)渲染。
  4. 基于CoreText可以做更好的原生交互效果,交互效果可以更細(xì)膩。而UIWebView的交互效果都是用javascript來實(shí)現(xiàn)的,在交互效果上會有一些卡頓存在。例如,在UIWebView下,一個簡單的按鈕按下效果,都無法做到原生按鈕的即時(shí)和細(xì)膩的按下效果。

當(dāng)然基于CoreText的方案也有一些劣勢:

  1. CoreText渲染出來的內(nèi)容不能像UIWebView那樣方便地支持內(nèi)容的復(fù)制。
  2. 基于CoreText來排版,需要自己處理圖片排版相關(guān)的邏輯,也需要自己處理鏈接點(diǎn)擊操作的支持。


Core Text 對象模型




您創(chuàng)建 CTFramesetter 關(guān)聯(lián)您提供的 NSAttributedString 。此時(shí) CTTypesetter 實(shí)例將自動創(chuàng)建, 它管理您的字體。下一步使用 CTFramesetter 創(chuàng)建您要用于渲染文本的一個或多個幀。

當(dāng)您創(chuàng)建幀時(shí),您指定一個用于此幀矩形內(nèi)的子文本范圍。Core Text 為每行文本自動創(chuàng)建一個 CTLine (注意這里) 與并創(chuàng)建多個 CTRun 文本分段,每個 CTRun 內(nèi)的文本有著同樣的格式。

例如,Core Text 可能為您的幾個紅色單詞創(chuàng)建一個 CTRun,其它 CTRun 包括純文本,另外一些 CTRun 是粗體等。再次重申,你不要自己直接創(chuàng)建 CTRun 實(shí)例, Core Text 使用其于您提供的 NSAttributedString 相關(guān)屬性創(chuàng)建它們。

每個 CTRun 對象可以采用不同的屬性,所以你可以精確的控制字距,連字,寬度,高度等更多屬性。


、使用 Core Text 繪圖

一般來說,Core Text 并沒有繪制圖像的能力。然而,因?yàn)樗且粋€布局引擎,它所能做的是保留一個空間讓你在其中繪制圖像。同時(shí),因?yàn)槟愕拇a中已經(jīng)有了 drawRect: 方法,繪制一個圖像很容易。讓我們看看在文本中保留一個空間是如何工作的: 還記得所有的文本塊實(shí)際上是 CTRun 的實(shí)例嗎?你只需為所給的 CTRun 設(shè)置委托,委托對象會負(fù)責(zé)將 CTRun 的上升空間、下降空間和寬度告知 Core Text。如下圖:



要呈現(xiàn)圖片,你需要明確的知道圖片將顯示在應(yīng)用中的哪個框架。要找到這個原點(diǎn),我們需要一系列的值:

  • 當(dāng)內(nèi)容被滾動時(shí):contentOffset
  • CTView 的框架的偏移 (frameXOffset,frameYOffset)
  • CTLine 的原點(diǎn)坐標(biāo) (CTLine 在段落的開始可能由偏移)
  • 最后是 CTRun 和 CTLine 兩者原點(diǎn)之間的距離。



三、character &&  glyph


A character is the smallest unit of written language that carries meaning, e.g. uppercase A.

A glyph is a concrete form of a character. In our previous example, the character uppercase A can be drawn with a different size or a different stroke thickness. It can lean or be vertical, and have certain optional variations in form. The following figure represents glyphs of the character A:




Note that characters and glyphs do not have a one-to-one correspondence. In some cases, a character may be represented by multiple glyphs, such as an é, which may be an e glyph combined with an acute accent glyph ′ (accent). In other cases, a single glyph may represent multiple characters, as in the case of a ligature, or joined letter. The following figure represents the ligature case:



A glyph-run is a set of consecutive glyphs sharing the same attributes and direction.


參考:

1、http://www.dapps.net/dev/iphone/how-to-create-a-simple-magazine-app-with-core-text.html


2、http://weblog.invasivecode.com/core-text





生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機(jī)掃描二維碼進(jìn)行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 日本 在线观看 | 国产福利一区二区在线观看 | 欧美成人第一页 | 亚洲欧洲高清有无 | 国产亚洲精品久久久久91网站 | 午夜久久久久久网站 | 久久久精品久久 | 亚洲第一视频区 | 最近中文字幕mv在线高清 | 精品一成人岛国片在线观看 | 午夜手机福利视频 | 最新国产精品精品视频 | 欧美日本一二三区 | 成人午夜影视全部免费看 | 亚洲精品不卡午夜精品 | 亚洲三级图| 午夜看片网 | 在线看亚洲 | 99久久精品免费看国产漫画 | 久久精品嫩草影院免费看 | 秋霞午夜伦午夜高清福利片 | www免费视频| 亚洲精品专区 | 性xxxx免费观看视频 | 最近在线更新中文字幕1 | 国产精品一区在线麻豆 | 亚洲天堂h | 国产精品久久久久无码av | 国产精品欧美亚洲韩国日本不卡 | 亚洲黄色网址在线观看 | 欧美亚洲国产精品久久 | 一区二区在线视频 | 在线视频亚洲欧美 | 欧美18一19sex极品 | 午夜免费啪在线观看视频网站 | 久久久高清 | 亚洲欧洲无码一区二区三区 | 欧美视频三区 | 日韩欧美在线观看视频一区二区 | 亚洲成人在线视频 | 女男羞羞视频网站免费 |