CoreText 學習記錄

2021-10-05 22:43:42 字數 1736 閱讀 7949

**基於swift 4.0.

####一、座標系

coretext 的原點是左下角。 而進行ui布局時參照的座標系原點在左上角。所以一般會對座標系進行翻轉。

在override func draw(_ rect: cgrect)  中呼叫

// coretext 設定前10個字為紅色帶下劃線

func test01() {

// 1.

let context = uigraphicsgetcurrentcontext()

// 2. 由於coretext一開始便是定位於桌面的排版系統,所以使用了傳統的原點在左下角的座標系,所以它在繪製文字的時候都是參照左下角的原點進行繪製的。

// 轉換座標為左上角

context?.textmatrix = cgaffinetransform.identity

context?.translateby(x: 0, y: bounds.size.height)

context?.scaleby(x: 1.0, y: -1.0)

// 3.

let path = cgmutablepath()

path.addrect(bounds)

// 4

let string = "hello coretext! 由於coretext一開始便是定位於桌面的排版系統,所以使用了傳統的原點在左下角的座標系,所以它在繪製文字的時候都是參照左下角的原點進行繪製的"

// let attrstring = nsattributedstring(string:"hello coretext! 由於coretext一開始便是定位於桌面的排版系統,所以使用了傳統的原點在左下角的座標系,所以它在繪製文字的時候都是參照左下角的原點進行繪製的")

var attributes = [nsattributedstring.key: any]()

attributes[nsattributedstring.key.font] = uifont.systemfont(ofsize: 15)

let mutableattrstring = nsmutableattributedstring(string: string, attributes: attributes)

mutableattrstring.addattribute(.font, value: uifont.systemfont(ofsize: 20), range: nsrange(location: 0, length: 10))

mutableattrstring.addattribute(.foregroundcolor, value: uicolor.red, range: nsrange(location: 0, length: 10))

mutableattrstring.addattribute(.underlinestyle, value: nsnumber(value: 1), range: nsrange(location: 0, length: 10))

let framesetter = ctframesettercreatewithattributedstring(mutableattrstring)

let frame = ctframesettercreateframe(framesetter, cfrangemake(0, mutableattrstring.length), path, nil)

// 5

ctframedraw(frame,context!)

coreText繪製文字

為了使 結構清晰,可以將配置文字屬性 包括字型大小,行間距等資訊 寫成乙個類,再用乙個類去排版布局文字,最後將排版好的文字繪製在view上。首先根據要顯示的文字以及文字屬性生成nsmutableattributedstring content就是要顯示的文字內容 nsmutableattribute...

IOS利用Core Text對文字進行排版

2011 12 08 11 10 core text 這個包預設是沒有的,要自己手動新增進來。在ios中利用core text對文字進行排版的幾個關鍵點如下 字間距 kctkernattributename 行間距 kctparagraphstylespecifierlinespacingadjus...

基於Core Text實現的TXT電子書閱讀器

本篇文章的專案位址基於core text實現的txt電子書閱讀器。最近花了一點時間學習了ios的底層文書處理的框架core text。在網上也參考很多資料,具體的資料在文章最後列了出來,有興趣的可參考一下。本篇主要介紹實現txt電子書閱讀器設計用到的core text相關的用法與實現。core te...