亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

CoreText使用介紹

2019-11-09 15:02:20
字體:
來源:轉載
供稿:網友
一、概述  1.CoreText是蘋果創建的一個用于文字排版的框架,可以實現文字排版、圖文混排等復雜的界面效果。從iOS3.2啟用。2.一個開源工具類-OHAttributedLabel,就是使用CoreText框架實現的,能夠實現一個Label中有不同的文字大小、文字顏色、字體以及鏈接等。  二、一般使用步驟1.創建NSMutableAttributedStringNSMutableAttributedString *attributeString = [[NSMutableAttributedString alloc] initWithString:contentString];                2.設置文字顏色                [attributeString addAttribute:(id)kCTForegroundColorAttributeName                        value:(id)[UIColor darkGrayColor].CGColor                         range:NSMakeRange(0, tempArticle.desc.length)];2.設置字體以及大小                CTFontRef font = CTFontCreateWithName(CFSTR("Bodoni 72"), contentFontSize, NULL);[attributeString addAttribute:(id)kCTFontAttributeName value:(id)font range:NSMakeRange(0, [attributeString length])];CFRelease(font);4.初始化段落首行縮進樣式CGFloat headIndent = contentFontSize * 2;CTParagraphStyleSetting headIndentStyle;headIndentStyle.spec = kCTParagraphStyleSpecifierFirstLineHeadIndent;headIndentStyle.valueSize = sizeof(headIndent);headIndentStyle.value = &headIndent;            5.初始化文字對齊方式            CTTextAlignment alignment = kCTJustifiedTextAlignment;CTParagraphStyleSetting alignmentStyle;alignmentStyle.spec = kCTParagraphStyleSpecifierAlignment;alignmentStyle.valueSize = sizeof(alignment);alignmentStyle.value = &alignment;            6.初始化行間距CGFloat lineSpace = 12.0f;CTParagraphStyleSetting lineSpaceStyle;lineSpaceStyle.spec = kCTParagraphStyleSpecifierLineSpacing;lineSpaceStyle.valueSize = sizeof(lineSpace);lineSpaceStyle.value = &lineSpace;            7.初始化段間距CGFloat paragraphSpace = 18;CTParagraphStyleSetting paragraphSpaceStyle;paragraphSpaceStyle.spec = kCTParagraphStyleSpecifierParagraphSpacing;paragraphSpaceStyle.valueSize = sizeof(paragraphSpace);paragraphSpaceStyle.value = &paragraphSpace;            8.將段落屬性設置到NSMutableAttributedStringCTParagraphStyleSetting settings[4] = {headIndentStyle,alignmentStyle,lineSpaceStyle,paragraphSpaceStyle};CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate((const CTParagraphStyleSetting*)&settings,4);[attributeString addAttribute:(id)kCTParagraphStyleAttributeName                         value:(id)paragraphStyle range:NSMakeRange(0, [attributeString length])];CFRelease(paragraphStyle);9.創建CTFramesetterRef            CTFramesetterRef frameSetter = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attributeString);            10.繪制之前,翻轉繪圖坐標系CGContextRef context = UIGraphicsGetCurrentContext();CGContextSetTextMatrix(context, CGAffineTransformIdentity);CGContextTranslateCTM(context, 0, self.bounds.size.height);CGContextScaleCTM(context, 1.0, -1.0);            11.按照區域進行繪制       CFIndex startIndex = 0; NSInteger pathCount = 0;while (YES) {   //構建繪圖區域   CGMutablePathRef columnPath = CGPathCreateMutable();   CGPathAddRect(columnPath, NULL,      CGRectMake(20 + (pathCount%columnNum) * ((768-(columnNum+1)*20)/columnNum + 20), 50, (768-(columnNum+1)*20)/columnNum, 904));   //構建內容窗體   CTFrameRef frame = CTFramesetterCreateFrame(frameSetter, CFRangeMake(startIndex,0), columnPath, NULL);   //繪制內容窗體   CTFrameDraw(frame, context);   //計算當前顯示結束位置的字符索引   CFRange currRange = CTFrameGetVisibleStringRange(frame);   startIndex = startIndex + currRange.length;   //釋放   CGPathRelease(columnPath);   CFRelease(frame);   //計數增加        pathCount++;   //結束   if (startIndex == [attributeString length]) {      break;   }}12.按照行進行繪制CFIndex start = 0;while (YES) {   //判斷是否繪制完畢   if (start == attributeString.length) {      break;   }   //根據內容、開始索引位置和繪制區域的寬度,返回推薦的換行位置索引   CFIndex count = CTTypesetterSuggestLineBreak(frameSetter, start, pageWidth);   //創建一個新行   CTLineRef line = CTTypesetterCreateLine(frameSetter, CFRangeMake(start, count));   //獲取新行的排版屬性        CGFloat ascent;   CGFloat descent;   CGFloat leading;   CTLineGetTypographicBounds(line, &ascent,  &descent, &leading);   //計算新行的Y值                    imageY = imageY - lineSpace - ascent - descent - leading;   //繪制行                    CGContextSetTextPosition(currContext, 0.0f, imageY);   CTLineDraw(line, currContext);   //釋放行對象                    CFRelease(line);   //更改當前繪制的位置索引                    start += count;}
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久亚洲一区二区三区四区五区高| 精品亚洲一区二区三区在线观看| 亚洲一区中文字幕在线观看| 欧美精品一本久久男人的天堂| 成人在线免费观看视视频| 国产精品mp4| 国产精品久久久久久久av电影| 亚洲男女自偷自拍图片另类| 亚洲欧美国产制服动漫| 亚洲区在线播放| 国产精品99蜜臀久久不卡二区| 4k岛国日韩精品**专区| 国产免费一区二区三区香蕉精| 亚洲精品黄网在线观看| 91美女片黄在线观| 欧美洲成人男女午夜视频| 欧美最顶级丰满的aⅴ艳星| 激情懂色av一区av二区av| 日韩在线观看高清| 成人国产精品免费视频| 精品国产一区二区三区久久| 国模gogo一区二区大胆私拍| 欧美视频免费在线| 亚洲欧美中文字幕| 欧美午夜无遮挡| 91精品91久久久久久| 国产免费成人av| 精品少妇一区二区30p| 亚洲精品视频播放| 国产精品视频一区二区三区四| 精品国内产的精品视频在线观看| 日本精品久久久久影院| 中文字幕日韩精品在线| 亚洲欧美日韩国产中文专区| 自拍偷拍亚洲精品| 亚洲国产欧美一区二区三区同亚洲| 亚洲国产美女久久久久| 日韩免费视频在线观看| 96pao国产成视频永久免费| 韩日精品中文字幕| 午夜精品久久久久久久白皮肤| 一区二区日韩精品| 国产精品va在线播放我和闺蜜| 色综久久综合桃花网| 国产精品日韩欧美大师| 少妇高潮久久久久久潘金莲| 日本一区二区三区在线播放| 亚洲精品av在线| 久久欧美在线电影| 中文字幕国产日韩| 国产亚洲美女精品久久久| 欧美电影在线播放| 亚洲美女性视频| www.亚洲免费视频| 欧美成人免费观看| 亚洲天堂男人天堂| 久久亚洲电影天堂| 久久久国产精品亚洲一区| 国产亚洲精品久久久优势| 久操成人在线视频| 亚洲老板91色精品久久| 不卡伊人av在线播放| 久久人人爽人人爽人人片亚洲| 国产激情久久久久| 影音先锋欧美精品| 国产一区二区黄| 18一19gay欧美视频网站| 亚洲香蕉伊综合在人在线视看| 亚洲激情视频网站| 综合网日日天干夜夜久久| 欧美做爰性生交视频| 日本久久久久亚洲中字幕| 日本国产一区二区三区| 欧美日韩在线视频首页| 狠狠爱在线视频一区| 欧美日韩国产成人在线观看| 97av在线播放| 91欧美精品午夜性色福利在线| 激情av一区二区| 久久久亚洲精品视频| 日韩av一卡二卡| 日韩精品视频在线| 亚洲精品自产拍| 欧美放荡办公室videos4k| 国产精品美女免费看| 亚洲一级片在线看| 国产在线日韩在线| 欧美日韩国产一区二区| 久久九九精品99国产精品| 亚洲影院在线看| 欧美激情视频在线观看| 国产欧美va欧美va香蕉在线| 97热在线精品视频在线观看| 91香蕉电影院| 日韩欧美亚洲范冰冰与中字| 亚洲电影成人av99爱色| 久久综合免费视频| 欧美大荫蒂xxx| 国产精品久久久久影院日本| 欧美国产高跟鞋裸体秀xxxhd| 欧美在线视频网站| 国产一区二区三区视频在线观看| 97视频在线看| 视频在线观看一区二区| 91精品国产99久久久久久| 狠狠躁夜夜躁久久躁别揉| 国产在线久久久| 最近更新的2019中文字幕| 最新国产成人av网站网址麻豆| 美女国内精品自产拍在线播放| 国产拍精品一二三| 91色中文字幕| 亚洲天堂视频在线观看| 亚洲精品国产综合区久久久久久久| 亚洲第一区第二区| 欧美电影院免费观看| 成人国产精品av| 欧美黑人性猛交| 久久精品男人天堂| 久久中文字幕在线视频| 国产精品夜间视频香蕉| 日韩欧美在线视频日韩欧美在线视频| 日本高清+成人网在线观看| 欧美日韩激情视频8区| 日韩69视频在线观看| 欧美孕妇毛茸茸xxxx| 欧美性猛交99久久久久99按摩| 国产亚洲精品高潮| 久久精品男人天堂| 欧美日韩国产区| 日韩网站免费观看| 在线a欧美视频| 欧美成人一区二区三区电影| 国产精品嫩草影院一区二区| 秋霞成人午夜鲁丝一区二区三区| 国产日韩欧美在线看| 亚洲精品久久久久久下一站| 亚洲精品在线91| 久久中文字幕视频| 久久全国免费视频| 欧美激情精品久久久久久| 日韩av在线直播| 91成人在线视频| 欧美激情一区二区三区久久久| 91久久久亚洲精品| 成人春色激情网| 亚洲国产小视频| 欧美精品久久久久久久免费观看| 日韩视频免费在线| 欧美日韩国产精品一区| 国内精品久久久| 欧洲亚洲免费在线| 国产精品成人免费视频| 亚洲www永久成人夜色| 亚洲v日韩v综合v精品v| 欧美亚洲国产视频| 久久99国产综合精品女同| 日韩成人在线免费观看| 欧美日韩性视频| 日韩免费中文字幕| 久久久久久久久久久av| 在线精品视频视频中文字幕| 亚洲网站在线观看| 欧美午夜无遮挡|