**基於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...