日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php框架 > codeigniter > CoreText 學習筆記

CoreText 學習筆記

來源:程序員人生   發布時間:2014-10-11 08:00:01 閱讀次數:7196次


一、Coretext 與 UIWebView

基于CoreText來實現和基于UIWebView來實現相比,前者有以下好處:

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

當然基于CoreText的方案也有一些劣勢:

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


Core Text 對象模型




您創建 CTFramesetter 關聯您提供的 NSAttributedString 。此時 CTTypesetter 實例將自動創建, 它管理您的字體。下一步使用 CTFramesetter 創建您要用于渲染文本的一個或多個幀。

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

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

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


、使用 Core Text 繪圖

一般來說,Core Text 并沒有繪制圖像的能力。然而,因為它是一個布局引擎,它所能做的是保留一個空間讓你在其中繪制圖像。同時,因為你的代碼中已經有了 drawRect: 方法,繪制一個圖像很容易。讓我們看看在文本中保留一個空間是如何工作的: 還記得所有的文本塊實際上是 CTRun 的實例嗎?你只需為所給的 CTRun 設置委托,委托對象會負責將 CTRun 的上升空間、下降空間和寬度告知 Core Text。如下圖:



要呈現圖片,你需要明確的知道圖片將顯示在應用中的哪個框架。要找到這個原點,我們需要一系列的值:

  • 當內容被滾動時:contentOffset
  • CTView 的框架的偏移 (frameXOffset,frameYOffset)
  • CTLine 的原點坐標 (CTLine 在段落的開始可能由偏移)
  • 最后是 CTRun 和 CTLine 兩者原點之間的距離。



三、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





生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩 国产 欧美 | 亚洲美女av网站 | 自拍偷拍第一页 | a黄色片| 国产精品不卡在线 | www久久国产 | 亚洲欧洲自拍偷拍 | 亚洲成人中文 | 亚洲一区二区三区在线免费观看 | 99热免费| 毛片久久久 | 亚洲久久 | 免费黄色小网站 | 精品无码久久久久久久动漫 | 91干b| 国产毛片精品 | 国产伦精品一区 | 偷拍自拍第一页 | 亚洲精品欧洲 | 亚洲最大色综合成人av | 亚洲午码 | 欧美日韩中文在线观看 | 久久99精品久久久久久噜噜 | 国产一区二区三区精品久久久 | 欧美成人在线免费视频 | 亚洲国产一区二区视频 | 亚洲精品免费在线 | 久久久精选 | 黄色在线 | 国产精品久久久久久久久免费相片 | 色综合欧美 | 香蕉成人啪国产精品视频综合网 | 91精品一区二区三区在线观看 | 日韩亚洲一区二区 | 欧美日韩中文字幕 | 国产精品欧美一区二区三区不卡 | 91精品久久久久久久久久不卡 | 欧美a区 | 少妇性色午夜淫片aaa播放 | 一区二区精品在线 | 亚洲高清色图 |