1. 程式人生 > >iOS:CoreText的常用語法

iOS:CoreText的常用語法

ear 單位 [] 翻轉 1.2 iphone 書寫 attach direct

CoreText的關鍵語法

一、坐標旋轉

-(void)drawRect:(CGRect)rect
{

    //獲取上下文
    CGContextRef ctx = UIGraphicsGetCurrentContext();
 

    //在上下文中,創建一個標準坐標系
    CGContextSetTextMatrix(ctx, CGAffineTransformIdentity);
 

    //將上下文中的原點,進行平行移動,下面是沿著y軸方向移動,從而轉換成屏幕坐標系
    CGContextTranslateCTM(ctx, 0, self.bounds.size.height);
 

    
//翻轉y軸正方 CGContextScaleCTM(ctx, 1.0, -1.0); //繪制尺寸(stringModel是字符串模型,通過它提前算好了繪制尺寸),直接進行繪制 CTFrameRef ctFrame = self.stringModel.ctFrame; CTFrameDraw(ctFrame, ctx); }

二、主要鍵名

//1、設置字體屬性,默認值:字體:Helvetica(Neue) 字號:12
NSFontAttributeName            

 
//2、設置字體顏色,取值為 UIColor對象,默認值為黑色          
NSForegroundColorAttributeName //3、設置字體所在區域背景顏色,取值為 UIColor對象,默認值為nil, 透明色 NSBackgroundColorAttributeName //4、設置連體屬性,取值為NSNumber 對象(整數),0 表示沒有連體字符,1 表示使用默認的連體字符 NSLigatureAttributeName //5、設定字符間距,取值為 NSNumber 對象(整數),正值間距加寬,負值間距變窄 NSKernAttributeName
//6、設置刪除線,取值為 NSNumber 對象(整數) NSStrikethroughStyleAttributeName //7、設置刪除線顏色,取值為 UIColor 對象,默認值為黑色 NSStrikethroughColorAttributeName //8、設置下劃線,取值為 NSNumber 對象(整數),枚舉常量 NSUnderlineStyle中的值,與刪除線類似 NSUnderlineStyleAttributeName //9、設置下劃線顏色,取值為 UIColor 對象,默認值為黑色 NSUnderlineColorAttributeName //10、設置筆畫寬度,取值為 NSNumber 對象(整數),負值填充效果,正值中空效果 NSStrokeWidthAttributeName //11、填充部分顏色,不是字體顏色,取值為 UIColor 對象 NSStrokeColorAttributeName //12、設置陰影屬性,取值為 NSShadow 對象 NSShadowAttributeName //13、設置文本特殊效果,取值為 NSString 對象,目前只有圖版印刷效果可用 NSTextEffectAttributeName //14、設置基線偏移值,取值為 NSNumber (float),正值上偏,負值下偏 NSBaselineOffsetAttributeName //15、設置字形傾斜度,取值為 NSNumber (float),正值右傾,負值左傾 NSObliquenessAttributeName //16、設置文本橫向拉伸屬性,取值為 NSNumber (float),正值橫向拉伸文本,負值橫向壓縮文本 NSExpansionAttributeName //17、設置文字書寫方向,從左向右書寫或者從右向左書寫 NSWritingDirectionAttributeName //18、設置文字排版方向,取值為 NSNumber 對象(整數),0 表示橫排文本,1 表示豎排文本 NSVerticalGlyphFormAttributeName //19、設置鏈接屬性,點擊後調用瀏覽器打開指定URL地址 NSLinkAttributeName //20、設置文本附件,取值為NSTextAttachment對象,常用於文字圖片混排 NSAttachmentAttributeName //21、設置文本段落排版格式,取值為 NSParagraphStyle 對象 NSParagraphStyleAttributeName

三、主要函數

//1、傳入CTFrame,返回一個裝有多個CTLine對象的數組。
CFArrayRef CTFrameGetLines( CTFrameRef frame ) CT_AVAILABLE(10_5, 3_2);


//2、獲取數組中的元素個數
CFIndex CFArrayGetCount(CFArrayRef theArray);

 
//3、獲取數組中第idx個元素
const void *CFArrayGetValueAtIndex(CFArrayRef theArray, CFIndex idx);


//4、 獲取所有CTLineRef的基礎原點,傳入CTFrame,CFRange,和一個CGPoint的結構體數組指針,該函數會把每一個CTLine的origin坐標寫到數組裏。
void CTFrameGetLineOrigins(CTFrameRef frame, CFRange range, CGPoint origins[] ) CT_AVAILABLE(10_5, 3_2);


//5、獲取CTLine中文字在整段文字中的Range
CFRange CTLineGetStringRange( CTLineRef line ) CT_AVAILABLE(10_5, 3_2);


//6、獲取CTLine中的CTRun的數組
CFArrayRef CTLineGetGlyphRuns( CTLineRef line ) CT_AVAILABLE(10_5, 3_2);
 

//7、獲取CTRun在整段文字中的Range
CFRange CTRunGetStringRange( CTRunRef run ) CT_AVAILABLE(10_5, 3_2);
 

//8、 獲取點擊處position文字在整段文字中的index
CFIndex CTLineGetStringIndexForPosition(CTLineRef line, CGPoint position ) CT_AVAILABLE(10_5, 3_2);
 

//9、獲取整段文字中charIndex位置的字符相對line的原點的x值
CGFloat CTLineGetOffsetForStringIndex(CTLineRef line,CFIndex charIndex,CGFloat * __nullable secondaryOffset ) CT_AVAILABLE(10_5, 3_2);


//10、獲取數組中字形個個數
CFIndex CTLineGetGlyphCount( CTLineRef line ) CT_AVAILABLE(10_5, 3_2);
 

//11、設置CoreText繪制前的坐標。設置基線位置
CG_EXTERN void CGContextSetTextPosition(CGContextRef __nullable c,
    CGFloat x, CGFloat y)
    CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);

 
//12、繪制CTLine。
void CTLineDraw( CTLineRef line, CGContextRef context ) CT_AVAILABLE(10_5, 3_2);
 

//13、獲取CTLine的上行高度,下行高度,行距
double CTLineGetTypographicBounds(
    CTLineRef line,
    CGFloat * __nullable ascent,
    CGFloat * __nullable descent,
    CGFloat * __nullable leading ) CT_AVAILABLE(10_5, 3_2);
 

//14、設置當前文本矩陣
CG_EXTERN void CGContextSetTextMatrix(
    CGContextRef __nullable c,
    CGAffineTransform t)
    CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
 

//15、獲取一行文字的範圍, 就是指把這一行文字點有的像素矩陣作為一個image圖片,來得到整個矩形區域。相對於每一行基線原點的偏移量和寬高(例如:{{1.2, -2.57227}, {208.025, 19.2523}},就是相對於本身的基線原點向右偏移1.2個單位,向下偏移2.57227個單位,後面是寬高)
CGRect CTLineGetImageBounds(
    CTLineRef line,
    CGContextRef __nullable context ) CT_AVAILABLE(10_5, 3_2);

iOS:CoreText的常用語法