iOS開發(fā)之弧形文字
項目需要一個環(huán)形進(jìn)度條,所以需要弧形的文字顯示進(jìn)度,網(wǎng)上找了一圈沒有什么適合的,所以自己封裝了一個簡單的弧形文字。
基本屬性參數(shù)如下
基本思路是?CTRunDraw()方法對每個glyph進(jìn)行繪制 關(guān)于?CTRun CTLine Glyphs 的解釋可以參照"https://www.jianshu.com/p/639f626c1661"
首先我們需要一個結(jié)構(gòu)體來計算出每個glyph的繪制點和偏移角度:
創(chuàng)建上面結(jié)構(gòu)體并賦值:
其中PrepareGlyphArcInfo()是賦值的函數(shù),它通過遍歷每個CTRun中的glyph,并用單個glyph的width對結(jié)構(gòu)體GlyphArcInfo賦值,并通過每個glyph中心點距離和總行寬的比值計算angle進(jìn)行賦值:
將繪制原點設(shè)置為我們需要的位置:
開發(fā)的時候可以畫一個圓來方便理解:
開始繪制圖形,設(shè)置繪制的起始點:
對context進(jìn)行旋轉(zhuǎn)至開始角度:
遍歷glyph并作圖:
由此畫出來的圖形是倒著的 所以需要翻轉(zhuǎn)畫布 (放在繪制之前)
調(diào)用:
效果圖:

drawRect完整代碼:
demo地址:"https://github.com/yollet/YOTool.git"
參考內(nèi)容:"https://www.it610.com/article/1187879396397129728.htm"
蘋果官方文檔: "https://developer.apple.com/library/mac/samplecode/CoreTextArcCocoa/Introduction/Intro.html"