iOS:CoreText的常用語法
阿新 • • 發佈:2017-09-05
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的常用語法