精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何使用Cocoa文字系統

移動開發 iOS
Cocoa文字系統是一組類,NSTextView、NSTextField和NSStringDrawing都會用它們在屏幕上顯示字符。如果你閱讀過蘋果的文檔,可能你會被嚇到,因為蘋果的文檔寫的非常復雜,包括了非常多的類。

本文主要來介紹如何使用Cocoa文字系統,在某些情況下你可能需要對想顯示在屏幕上的文字做更多的控制,而不是僅僅使用NSTextField或者NSTextView,有時候你需要更高效地在屏幕上畫文字,而不想使用NSStringDrawing方法。還可能你需要在CGContext上畫文字,再有可能你想在一個Carbon程序中畫文字。

這個時候,你就可能會考慮CoreText了,不過你還可能想兼容Mac OS X 10.4。這里又一個簡單的方法可以滿足你全部的需要。

Cocoa文字系統

這個辦法就是使用Cocoa文字系統。Cocoa文字系統是一組類,NSTextView、NSTextField和NSStringDrawing都會用它們在屏幕上顯示字符。如果你閱讀過蘋果的文檔,可能你會被嚇到,因為蘋果的文檔寫的非常復雜,包括了非常多的類,諸如:NSLayoutManagers, NSTextStorages, NSTextContainers, NSGlyphGenerators, NSTypesetters…不過別怕,實際使用起來還是挺簡單的。

蘋果其實已經在Drawing Text with NSLayoutManager這篇文檔中提供了一個很好的關于如何顯示文字的介紹。

如果你讀過上面的文檔,你可能會發現,你實際上僅僅需要使用三個類就可以在屏幕上顯示任何帶有效果的Unicode字符串,這些字符串包含在一個由NSLayoutManager控制的方框內。你希望顯示的文字和文字的屬性保存在NSTextStorage中,需要顯示的位置是由NSTextContainer指定的。另外,如果你創建了這些對象,你還可以將它們緩存,這樣可以明顯加快顯示速度。

你可以像通常一樣使用+alloc/-init方法建立這些對象,然后告訴layout manager保管這些文字的外觀,告訴text storage保管layout manager。蘋果的例子大概是這樣的:

  1. NSTextStorage *textStorage = [[NSTextStorage alloc] initWithString:@"This is the text string."];  
  2. NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init];  
  3. NSTextContainer *textContainer = [[NSTextContainer alloc] init];  
  4. [layoutManager addTextContainer:textContainer];  
  5. [textContainer release];  
  6. [textStorage addLayoutManager:layoutManager];  
  7. [layoutManager release];  
  8. // Use the objects.  
  9. [textStorage release]; 

想在屏幕上顯示這個字符串的話,你可以指定顯示的位置,然后告訴layout manager使用drawGlyphsForGlyphRange在屏幕的特定位置顯示。

  1. [textContainer setContainerSize: rect.size];  
  2. NSRange glyphRange = [layoutManager glyphRangeForTextContainer: textContainer];  
  3. [layoutManager drawGlyphsForGlyphRange: glyphRange atPoint: rect.origin]; 

還是很簡單的,對吧?有兩件事情需要注意:當你改變文字容器的尺寸時,文字需要重新排列和折行,這些操作可以通過緩存來加速。另外,你可以直接調用glyphRangeForTextContainer:方法來手動控制文字重排。

如果想在文字中添加特殊風格或者圖片,也很簡單,因為NSTextStorage是NSMutableAttibutedString的子類,所以指定風格、字體都很容易。

測量文字

比如你希望測量一段文字要占屏幕多大位置,可以先將文字容器的一個屬性:寬或者高設置成一個定值,然后將另外一個屬性設置成一個很大的數值,比如FLT_MAX,然后調用-glyphRangeForTextContainer:方法重排文字,然后就可以通過-usedRectForTextContainer:方法獲取到這段文字實際需要占多大的屏幕空間了:

  1. [textContainer setContainerSize: NSMakeSize([self bounds].size.width, FLT_MAX)];  
  2. (NSRange) [layoutManager glyphRangeForTextContainer: textContainer]; // Cause re-layout.  
  3. NSRect neededBox = [layoutManager usedRectForTextContainer: textContainer]; 

在Quartz或Carbon中使用Cocoa文字系統

Carbon直接使用Quartz的API。另外,在OpenGL材質中、PDF中和其他特殊地方顯示文字也都直接使用Quartz。那么,如何才能在Quartz中使用上面所說的方法呢?你無法獲取到NSGraphicsContext,你只有CGContext,怎么辦呢?其實不難,NSGraphicsContext中都帶有一個CGContext,而且可以互相轉換。這樣,比如你獲取到一個叫做inContext的CGContextRef變量,你可以用下面的方法實現文字顯示:

  1. [NSGraphicsContext saveGraphicsState];  
  2. NSGraphicsContext   
  3. context = [NSGraphicsContext graphicsContextWithGraphicsPort: inContext flipped: true];   
  4. [NSGraphicsContext setCurrentContext: context];  
  5. // Do Cocoa drawing here.  
  6. [NSGraphicsContext restoreGraphicsState]; 

這樣做的好處是Cocoa文字系統不僅僅比ATSUI簡單,而且它的設計非常類似CoreText。因此如果你希望在你的軟件未來的某個版本中使用CoreText,你可以現在就用這種方式顯示文字,那么將來的轉換會非常方便。

小結:關于如何使用Cocoa文字系統的內容介紹完了,希望通過本文的學習對你有所幫助!

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-08-15 14:27:51

CocoaRunLoop

2011-07-07 13:51:24

Cocoa 框架

2011-07-06 15:06:46

Xcode Cocoa

2011-05-11 17:48:31

CocoaiOS

2011-08-11 15:46:55

CocoaCocoa Touch框架

2011-07-28 11:12:25

Cocoa 內存

2011-07-20 14:46:59

Cocoa XML 文件

2011-08-10 18:37:32

CocoaMac OS X

2011-05-11 15:27:58

Windows OOPCocoa MVCCocoa

2011-08-15 15:26:20

iPhone開發CocoaXML

2011-07-07 13:39:14

Cocoa 框架

2011-07-07 13:30:32

Cocoa Core

2011-07-07 14:22:27

Cocoa 對象 生命周期

2011-07-07 13:59:49

Cocoa Objective- 根類

2011-07-28 17:46:54

IOS Cocoa 用戶界面

2011-07-20 09:49:41

Xcode Interface Builder

2011-08-10 18:47:18

Cocoa字符串

2011-06-17 16:23:49

Cocoa蘋果

2011-07-26 10:42:00

Cocoa Cocoa2d 游戲

2011-07-08 18:03:30

Cocoa Touch 網絡
點贊
收藏

51CTO技術棧公眾號

亚洲精品久久久蜜桃动漫| 国产草草浮力影院| 人妖欧美1区| 91原创在线视频| 国产99在线|中文| 国产一二三av| 国产精品白浆| 欧美吞精做爰啪啪高潮| 国产免费裸体视频| 国产高清免费av在线| 国产精品99久| 国产成人福利视频| 九九精品在线观看视频| 欧美久久综合网| 亚洲白拍色综合图区| 日本成人中文字幕在线| 国产乱码在线| 中文字幕欧美一| 蜜桃麻豆91| 性欧美8khd高清极品| 日韩电影一区二区三区四区| 欧美黄网免费在线观看| 欧美人与性囗牲恔配| 都市激情亚洲| 日韩一级黄色大片| 欧美午夜aaaaaa免费视频| av最新在线| 亚洲免费观看在线观看| 先锋在线资源一区二区三区| 天天躁日日躁狠狠躁喷水| 韩国一区二区三区| 国产suv精品一区二区| 国产无遮挡又黄又爽又色| 香蕉久久网站| 最新69国产成人精品视频免费| 国产美女喷水视频| 欧美成人基地| 亚洲高清一区二| 性感美女一区二区三区| 只有精品亚洲| 欧美群妇大交群的观看方式| 免费日韩视频在线观看| 久久男人天堂| 午夜精品爽啪视频| 一二三在线视频| 爆操欧美美女| 亚洲欧美视频一区| 美女黄色片网站| 日本三级视频在线播放| 国产精品视频第一区| 欧美成人综合一区| 欧美日韩在线中文字幕| 久久免费看少妇高潮| 久久久久久九九九九| 日本高清视频免费观看| www.日韩大片| 久久一区免费| 好男人免费精品视频| 国产午夜亚洲精品午夜鲁丝片| 麻豆一区区三区四区产品精品蜜桃| 少妇高潮一区二区三区69| 成人黄色国产精品网站大全在线免费观看 | 国产精品日韩欧美综合| 中文字幕免费高清在线观看| 免费在线看一区| 国产一区视频在线| 国产乱淫av片免费| 国产大片一区二区| 国产精品一区二区a| 污视频软件在线观看| wwwwww.欧美系列| 欧美亚洲一级二级| 日韩理伦片在线| 亚洲免费在线播放| 国产精彩视频一区二区| 亚洲精品mv| 欧美巨大另类极品videosbest| 中文字幕在线视频一区二区| 国产精品白丝一区二区三区| 亚洲精品国产精品自产a区红杏吧| 亚洲国产精品无码久久久久高潮 | 国产午夜福利一区二区| 日韩网站在线| 国产精品久久99久久| 99久久精品国产成人一区二区| 国产不卡在线播放| 久久人人爽爽人人爽人人片av| 国产精品一级伦理| 一区二区三区国产精品| 日本成年人网址| 91精品一区| 日韩高清中文字幕| 999精品视频在线观看播放| 在线精品观看| 国产欧美日韩视频| 污视频网站免费观看| 国产精品久久久99| 欧美人成在线观看| 国语自产精品视频在线看抢先版结局| 91精品国产91久久久久久最新毛片| 日本不卡视频一区| 日本高清免费电影一区| 97高清免费视频| 中文字幕一级片| 成人av网站在线| 在线精品亚洲一区二区| 欧亚av在线| 91精品国产91久久综合桃花| 久久久久亚洲av成人无码电影| 午夜国产一区| 国产精品最新在线观看| 亚洲av电影一区| 亚洲精品久久久蜜桃| 黄色国产小视频| 红杏aⅴ成人免费视频| 久久亚洲欧美日韩精品专区| aaaaaa毛片| 成人污视频在线观看| 国产91av视频在线观看| 性欧美videohd高精| 精品卡一卡二卡三卡四在线| 五月天免费网站| 免费精品视频| 久久国产一区| 91九色国产在线播放| 欧美一级淫片007| 亚洲不卡的av| 视频一区在线播放| 麻豆久久久9性大片| 伦理在线一区| 日韩一级精品视频在线观看| 久久久99999| 美腿丝袜亚洲一区| 日韩精品无码一区二区三区| 亚洲一级少妇| 亚洲国模精品私拍| xxxx 国产| 国产精品一区一区| 免费成人进口网站| 亚洲人体在线| 精品国产美女在线| 91免费视频播放| 国产精品萝li| 国产三级精品三级在线| 欧美1级片网站| 国产精品视频久久久| av网站大全在线观看| 精品视频在线免费| 欧美日韩国产一二三区| 久久99精品久久只有精品| 亚洲精品日韩成人| 欧美视频第一| 久久国产精品电影| 成人午夜福利视频| 精品日本美女福利在线观看| av鲁丝一区鲁丝二区鲁丝三区| 99精品欧美| 欧美中日韩一区二区三区| 成人自拍av| 日韩在线视频一区| va婷婷在线免费观看| 夜色激情一区二区| 日本一区二区三区网站| 丝袜亚洲另类欧美| 亚洲精品视频一二三| 91麻豆精品| 欧美黑人视频一区| 四虎影视精品成人| 欧美探花视频资源| 免费在线观看亚洲| 91啪亚洲精品| 久久国产激情视频| 国产精品国码视频| 欧美韩国日本精品一区二区三区| 蜜桃精品在线| 欧美成人黑人xx视频免费观看| 欧美性色aⅴ视频一区日韩精品| 午夜国产福利视频| 国产传媒久久文化传媒| 日韩少妇内射免费播放18禁裸乳| 欧美一站二站| 99久久无色码| 男人皇宫亚洲男人2020| 久久精品美女视频网站| 五月激情六月婷婷| 欧美日韩中文一区| 男人的天堂一区| 中文字幕一区二区三区四区| 无码人妻一区二区三区一| 亚洲一区图片| 免费看啪啪网站| 偷拍亚洲精品| 亚洲一区二区三区久久| 依依综合在线| 欧美成人精品一区二区| 欧美美乳在线| 欧美成人猛片aaaaaaa| 波多野结衣视频观看| 一区二区三区高清不卡| 亚洲最大成人综合网| 岛国av在线一区| 婷婷免费在线观看| 国产精品久久久免费| 永久免费在线看片视频| 视频精品在线观看| 国产一区二区三区无遮挡| 欧美aaaaaaaa| 国产高清在线不卡| 91美女精品| 欧美久久精品午夜青青大伊人| 麻豆av电影在线观看| 欧美成va人片在线观看| 亚洲一线在线观看| 色婷婷亚洲婷婷| 日本熟妇乱子伦xxxx| 亚洲色图一区二区| 亚洲图片另类小说| 97国产一区二区| 潘金莲一级淫片aaaaaaa| 久久99久久久欧美国产| 久久综合久久色| 9久re热视频在线精品| 成人国产在线看| 91亚洲国产| 日韩久久久久久久久久久久久| 欧美偷窥清纯综合图区| 国产精品xxx在线观看www| 亚洲色图图片| 国产美女扒开尿口久久久| 成人欧美大片| 欧美一二三视频| 亚洲第一av| 欧美性做爰毛片| 男人的天堂免费在线视频| 国内精品久久久久久影视8| 色呦呦在线免费观看| 欧美成人在线影院| 哥也色在线视频| 久久天堂电影网| 欧美被日视频| 中日韩美女免费视频网站在线观看 | 国产精品一区二区在线观看不卡 | 久久精品在线播放| 欧洲不卡视频| 久久视频这里只有精品| 最新国产露脸在线观看| 欧美成人国产va精品日本一级| 老司机在线视频二区| 久久久999精品| 91蜜桃在线视频| 欧美激情三级免费| 日韩在线伦理| 国产成人一区二区| 欧美视频免费看| 亚洲在线观看视频网站| 视频精品国内| 久久香蕉综合色| 成人精品久久| 中文字幕欧美日韩一区二区三区| 外国成人激情视频| 白白操在线视频| 99精品免费网| 久久99999| 国产二区国产一区在线观看| 欧美久久久久久久久久久| 成人免费观看视频| 国产男男chinese网站| 国产日韩欧美精品电影三级在线| 很污很黄的网站| 一级中文字幕一区二区| www.伊人久久| 欧美日韩成人综合在线一区二区| 99在线观看精品视频| 亚洲精品国产免费| 国产福利小视频在线| 久久伊人91精品综合网站| 国产自产自拍视频在线观看| 欧美中文字幕在线视频| 亚洲天堂网站| 加勒比在线一区二区三区观看| 红桃视频在线观看一区二区| 国产精品无码乱伦| 一本色道88久久加勒比精品| 妓院一钑片免看黄大片| 国产精品一品视频| 男人天堂av电影| 亚洲欧美日韩在线不卡| 西西44rtwww国产精品| 欧美日韩国产首页| 色窝窝无码一区二区三区成人网站| 亚洲片在线观看| 91亚洲天堂| 国产精品aaa| av综合网站| 一级做a爰片久久| 国产欧美日韩亚洲一区二区三区| 天天综合网日韩| 99re66热这里只有精品3直播| 性爱在线免费视频| 亚洲成人免费视频| 国产视频一区二区三| 亚洲人成网站999久久久综合| www国产在线观看| 国产极品精品在线观看| 白白在线精品| 曰韩不卡视频| 久久亚洲精选| 无码成人精品区在线观看| 国产精品久久久久三级| 国产午夜免费福利| 欧美mv日韩mv亚洲| 里番在线观看网站| 日本精品久久久| 久久aimee| av日韩在线看| 久久99精品视频| 成人在线观看免费高清| 狠狠综合久久av一区二区小说| 精品毛片一区二区三区| 日日骚久久av| 国产一区一一区高清不卡| 精品国产一区二区三区免费| 欧美精品国产一区| 色www免费视频| 欧美国产日韩a欧美在线观看| 欧美亚洲精品天堂| 精品国产网站在线观看| 欧美a在线看| 国产精品中文字幕在线| 国产亚洲精品美女久久久久久久久久| 五十路熟女丰满大屁股| 国产成人精品网址| 国产精品精品软件男同| 欧日韩精品视频| 国产中文字幕在线视频| 日本国产精品视频| 曰本一区二区三区视频| 男人天堂999| 91啦中文在线观看| 久久青青草视频| 日韩精品免费在线播放| 鲁鲁在线中文| 成人免费视频视频在| 欧美永久精品| 亚洲免费观看在线| 香蕉影视欧美成人| 五月婷婷狠狠干| 91国内免费在线视频| 日本在线中文字幕一区| 国产美女永久无遮挡| 成人午夜碰碰视频| 91看片在线播放| 亚洲人成在线播放| 欧美成人aaa| 2021狠狠干| 成人小视频免费观看| 国产午夜免费福利 | 快射av在线播放一区| 91在线高清视频| 欧美视频不卡| 亚洲欧美视频在线播放| 在线一区二区三区四区| 最新av网站在线观看| 成人黄色影片在线| 欧美一区二区三区另类| 无码国产精品久久一区免费| 亚洲不卡在线观看| 国产在线观看免费| 国产精品爽黄69天堂a| 亚洲人metart人体| 亚洲国产精品无码久久久久高潮| 91久久精品日日躁夜夜躁欧美| 日本a在线播放| www 成人av com| 国产免费成人| 午夜激情视频在线播放| 亚洲成色777777在线观看影院| 在线免费日韩片| 正在播放久久| va亚洲va日韩不卡在线观看| 国产一区二区视频免费| 久久艳片www.17c.com| 欧美毛片免费观看| 亚洲不卡视频在线| 亚洲综合无码一区二区| 国产在线91| 99久久久精品免费观看国产| 丝袜诱惑亚洲看片| 青春草免费视频| 在线播放国产一区中文字幕剧情欧美 | 蜜桃视频在线观看免费视频网站www| 99久久免费国| 免费精品视频最新在线| 国产女同在线观看| 日韩在线视频一区| 最新国产一区| 国产性猛交96| 欧美日韩一区二区在线观看| av在线理伦电影| 91精品国产吴梦梦|