CoreText圖文混排實(shí)現(xiàn)簡單的文字形狀排布

剛接觸CoreText,目前項(xiàng)目想做一個(gè)文字全部居中,并且逐漸變寬的效果

如圖:

代碼如下:

- (void)drawRect:(CGRect)rect {

[super drawRect:rect];

// 步驟1:得到當(dāng)前用于繪制畫布的上下文,用于后續(xù)將內(nèi)容繪制在畫布上

// 因?yàn)镃ore Text要配合Core Graphic 配合使用的,如Core Graphic一樣,繪圖的時(shí)候需要獲得當(dāng)前的上下文進(jìn)行繪制

CGContextRef context = UIGraphicsGetCurrentContext();

// 步驟2:翻轉(zhuǎn)當(dāng)前的坐標(biāo)系(因?yàn)閷?duì)于底層繪制引擎來說,屏幕左下角為(0,0))

CGContextSetTextMatrix(context, CGAffineTransformIdentity);

CGContextTranslateCTM(context, 0, self.bounds.size.height);

CGContextScaleCTM(context, 1.0, -1.0);

// 步驟3:創(chuàng)建繪制區(qū)域

CGMutablePathRef path = CGPathCreateMutable();

CGPathAddEllipseInRect(path, NULL, self.bounds);

// 步驟4:創(chuàng)建需要繪制的文字與計(jì)算需要繪制的區(qū)域

NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:@"iOS程序在啟動(dòng)時(shí)會(huì)創(chuàng)建一個(gè)主線程,而在一個(gè)線程只能執(zhí)行一件事情,如果在主線程執(zhí)行某些耗時(shí)操作,例如加載網(wǎng)絡(luò)圖片,下載資源文件等會(huì)阻塞主線程(導(dǎo)致界面卡死,無法交互),所以就需要使用多線程技術(shù)來避免這類情況。iOS中有三種多線程技術(shù) NSThread,NSOperation,GCD,這三種技術(shù)是隨著IOS發(fā)展引入的,抽象層次由低到高,使用也越來越簡單。"];

// 步驟5:根據(jù)AttributedString生成CTFramesetterRef

CTFramesetterRef frameSetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attrString);

CTFrameRef frame = CTFramesetterCreateFrame(frameSetter, CFRangeMake(0, [attrString length]), path, NULL);

// 步驟6:進(jìn)行繪制

CTFrameDraw(frame, context);

// 步驟7.內(nèi)存管理

CFRelease(frame);

CFRelease(path);

CFRelease(frameSetter);

}

注:CGPathAddEllipseInRect是設(shè)置橢圓形狀

CGMutablePathRef path = CGPathCreateMutable();

CGPathAddEllipseInRect(path, NULL, self.bounds);

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 1.iOS中的round、ceil、floor函數(shù)略解 round如果參數(shù)是小數(shù),則求本身的四舍五入.ceil如果...
    K_Gopher閱讀 1,208評(píng)論 1 0
  • 最近在網(wǎng)上看了一些大牛的文章,自己也試著寫了一下,感覺圖文混排真的很強(qiáng)大。 廢話不多說,開始整 先上效果圖跟代碼,...
    AllureJM閱讀 1,025評(píng)論 0 1
  • --繪圖與濾鏡全面解析 概述 在iOS中可以很容易的開發(fā)出絢麗的界面效果,一方面得益于成功系統(tǒng)的設(shè)計(jì),另一方面得益...
    韓七夏閱讀 2,796評(píng)論 2 10
  • iOS沒有現(xiàn)成的支持圖文混排的控件,而要用多個(gè)基礎(chǔ)控件組合拼成圖文混排這樣復(fù)雜的排版,是件很苦逼的事情。對(duì)此的解決...
    清風(fēng)沐沐閱讀 686評(píng)論 0 2
  • 年前一直在糾結(jié)文字樣式問題,領(lǐng)導(dǎo)總覺得聊天那塊的文字字體不好看,嘗試了好幾種方法后調(diào)出一種效果。 1.先看...
    南楓小謹(jǐn)閱讀 1,242評(píng)論 0 0