CoreText 學習筆記,coretext學習筆記

來源:互聯網
上載者:User

CoreText 學習筆記,coretext學習筆記


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






對於學習筆記

  如何寫語文筆記

  如何寫語文筆記

  俗話說,“心記不如帶墨”,“眼過千遍不如手寫一遍”。老師在課堂上把課講得再清楚,如果學生不記下來,過些時候也會忘的。記筆記是記憶的擴大和延伸,便於以後複習、尋找。越是高等的學習,越是以記為主。學生在課堂上邊聽課邊記筆記,能處於動腦、動手、動耳的最佳學習狀態,可抑制“思想溜號”,使注意力高度集中,提高效率,加深印象。記筆記還能提高書寫速度,節省時間。老師從小學高年級起就應該教學生寫語文筆記。學生從小就學會記語文筆記,能為今後的語文學習和其它各科的學習打下基礎,形成自學的能力,養成良好的學習習慣,不但當時受益,而且能終生受用。

  怎樣記語文筆記呢?應該把學生的預習筆記、課堂筆記和部分語文作業合起來都寫在一個本上,統稱“語文筆記”。這樣可以化繁為簡,既減輕學生的學習負擔,又減輕老師的批改負擔;既有學生預習情況的檢查,又有課堂教學的反饋;還有基礎知識的驗收。老師批改語文筆記,可收到“一舉三得”的效果。

  語文筆記本最好用十六開的“格備課筆記本”,在每頁的兩邊豎著畫二道直線,分成三份。左邊一份約有兩個字寬,記項目用,起目錄索引的作用;右邊的一份約有一寸寬,做備忘用,這部分供學生靈活運用,記些疑難問題、自己的評價、感想、學習方法等,這部分記的內容不要求一致;中間的一份最寬,最重要,學習的內容都記在這一部分。

  準備工作做完以後,接下來就是如何記了。記語文筆記可以分做三個階段來進行:

  1.課前預習記

  學習新課以前學生要預習,把預習中學會的內容和自己不能解決的問題分別記在語文筆記的中間部分和右邊部分。通過查工具書能夠解決的字、詞等內容都在這時完成,這是語文筆記三個組成部分之一。

  2.課堂聽課記

  這是語文筆記中最重要的部分。在語文課上,學生要邊聽課邊記筆記,把新學的內容記在中間欄,把預習中理解不準確的現在得以更正的內容記在右邊備忘欄。這時有兩點要注意:一是不能老師講,學生聽,課後記或老師把要記的內容寫在黑板上學生抄;二是學生不能把老師說的話一字不落地都記下來,要在聽懂理解的基礎上,邊聽邊思維,總結出要點,概括成重點句子或重點詞語,然後再寫到語文筆記上,只要意思對怎麼寫都可以。剛著手訓練時,教師要把需要記的內容說慢點,長句子和重要之處重複一二遍。要記的關鍵詞、生辟詞、同音詞和易混、易錯的字,教師要板書,防止學生寫錯。

  3.課後鞏固記

  語文課上過以後,學生要整理筆記,課文中已經解決了的疑問要追記,落下部分要補上,心得體會最好是概括地記上,文章中的好詞好句也可以憑興趣摘抄。通過課後的整理和修改,學生對內容的理解加深了,認識得到升華了。課後要記的內容還包括該課書後面的部分練習題,如要抄寫的詞語,要解釋的字、詞,要理解的重點句子的含義,填括弧,造句等。這樣做,每課的內容都集中在語文筆記上,便於知識歸類,便於複習尋找;學生省得另外再拿本寫作業,可把語文筆記當做作業交;老師在批改語文筆記時,不但驗收了該課的基礎知識,還檢查了學生的預習情況和聽課情況。在訓練過程中,教師要以學生為主,徵求學生的意見,不斷改進做法,在形式和內容上都不強求一致,這樣可培養學生的創造性和求異思維能力。

  語文課堂學習及指導策略
 
什叫學習筆記?

學習筆記怎麼說呢?整天就聽著老師說要做好筆記,到底什麼是學習筆記呢?其實也很簡單,就是你上課的學習重點痛點,老師再三提醒的內容,你自己認為有價值的學科知識,及你的學習技巧等等,當然少不了的是結尾處最好把自己的疑問困惑心得等記下來,不僅方便老師瞭解你的學習情況,更重要的是有利於你自己以後尋找自己的不足。用心去做吧,必將有所收穫!!
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.