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

IOS開發框架:Core Plot開源框架使用

移動開發 iOS
Core Plot已經提供了Mac標準安裝器 CorePlotInstaller_0.2.2.zip , 你可以直接用安裝器安裝,可以很方便地把Core Plot直接以SDK的方式安裝到本機。

IOS開發框架Core Plot開源框架使用是本文要介紹的內容,主要是來學習IOS開發框架的學習。iPhone下的圖形框架并不是很多。其中比較知名的就兩個s7graphview和Core Plot。巧的是兩個都是Google的。前者使用簡單,但功能單一,只能畫曲線圖。后者是開源項目,項目仍在不斷更新中,用起來可就復雜多了,而且各個版本會有差異,包括屬性、方法,甚至是類名都有改變。

關于Core Plot使用的中文網上資料,不是缺乏,而是根本沒有。唯一的一篇介紹得比較詳細的文章是“Using Core Plot in an iPhone Application”, 原文是英文的:http://www.switchonthecode.com/tutorials/using-core-plot-in-an-iphone-application 。但時間真的是太老了,居然是09年5月發表的,原文很多地方已經不再適用。因此我費了好大的勁,才把原文中的代碼跑通了,不敢獨享,與各位共享之。

一、下載安裝Core Plot框架

原文介紹的是“源代碼”版本。首先下載并安裝Mercurial(很簡單,在http://www.selenic.com/mercurial/wiki/ 有標準Mac安裝包下載),再使用命令:

  1. hg clone http://core-plot.googlecode.com/hg/ core-plot 

即可把Core Plot項目源代碼下載到指定目錄core-plot下。

截至本文發表時止,Core Plot已經提供了Mac標準安裝器 CorePlotInstaller_0.2.2.zip   , 你可以直接用安裝器安裝,可以很方便地把Core Plot直接以SDK的方式安裝到本機。SDK的使用方法見后一篇博文《Core Plot SDK的用法》。

二、如何在項目中使用Core Plot

由于iOS 的限制,Core Plot以靜態庫的形式鏈接到iPhone應用。在core-plot/framework目錄下存在CorePlot- CocoaTouch.xcodeproj文件,這就是一個靜態庫項目。關于靜態庫的使用,前一篇博文《封裝自己的控件庫:iPhone靜態庫的應用》已 經有介紹,使用方法都是一樣的。

1、新建Windows-base Application項目。

2、使用Add->Existing Files…,把CorePlot-CocoaTouch.xcodeproj添加到新項目中。

3、把libCorePlot-CocoaTouch.a最右邊的“add to target”小框勾上。

4、選擇Target “info->General”,添加對項目CorePlot-CocoaTouch的依賴(引用)。

5、選擇新項目的“info->Build”,在“Header Search Paths”中添加Core Plot頭文件搜索路徑,如: /Users/kmyhy/core-plot/framework。注意要選中“Recursive”小勾(英文原文中沒有提這一點)。同時,在Other Linker Flags中要增加兩個選項:-ObjC和-all_load(英文原文中遺漏了第2個選項)。

6、新建一個ViewController,如TestViewController。在本例中,我們勾選了“With Xib”選項。在英文原文中,要求在Interface Build中把xib的View對象由UIView改為CPLayerHostingView(其實應當是CPGraphHostingView)。但在這里,其實沒有必要,只需在源代碼中修改就可以了。

7、.h文件:

  1. #import <UIKit/UIKit.h> 
  2. #import "CorePlot-CocoaTouch.h"  
  3. @interface TestViewController : UIViewController <CPPlotDataSource>{  
  4. CPXYGraph * graph ;  
  5. }  
  6. @end 

8、.m文件:

  1. #import "TestViewController.h"  
  2. @implementation TestViewController  
  3. -( NSUInteger )numberOfRecordsForPlot:( CPPlot *)plot {  
  4. return 51 ;  
  5. }  
  6. -( NSNumber *)numberForPlot:( CPPlot *)plot field:( NSUInteger )fieldEnum recordIndex:( NSUInteger )index {  
  7. double val = (index/ 5.0 )- 5 ;  
  8. if (fieldEnum == CPScatterPlotFieldX )  
  9. { return [ NSNumber numberWithDouble :val]; }  
  10. else  
  11. {  
  12. if (plot. identifier == @"X Squared Plot" )  
  13. { return [ NSNumber numberWithDouble :val*val]; }  
  14. else  
  15. { return [ NSNumber numberWithDouble : 1 /val]; }  
  16. }  
  17. }  
  18.  
  19. - ( void )viewDidLoad {  
  20.     //[super viewDidLoad];  
  21. graph = [[ CPXYGraph alloc ] initWithFrame : self . view . bounds ];  
  22.  
  23. // 原來的 CPLayerHostingView 由 CPGraphHostingView 所代替  
  24. self . view = [[ CPGraphHostingView alloc ] initWithFrame :[ UIScreen mainScreen ]. bounds ];  
  25.  
  26. CPGraphHostingView *hostingView = ( CPGraphHostingView *) self . view ;  
  27. hostingView. hostedGraph = graph ;  
  28. graph . paddingLeft = 20.0 ;  
  29. graph . paddingTop = 20.0 ;  
  30. graph . paddingRight = 20.0 ;  
  31. graph . paddingBottom = 20.0 ;  
  32.  
  33. CPXYPlotSpace *plotSpace = ( CPXYPlotSpace *) graph . defaultPlotSpace ;  
  34. plotSpace. xRange = [ CPPlotRange plotRangeWithLocation : CPDecimalFromFloat (- 6 )  
  35.    length : CPDecimalFromFloat ( 12 )];  
  36. plotSpace. yRange = [ CPPlotRange plotRangeWithLocation : CPDecimalFromFloat (- 5 )  
  37.    length : CPDecimalFromFloat ( 30 )];  
  38. CPLineStyle *lineStyle = [ CPLineStyle lineStyle ];  
  39.  
  40. //CPLineStyle 的 lineColor 和 lineWidth 已經變為只讀屬性  
  41. // lineStyle.lineColor = [CPColor blackColor];  
  42. // lineStyle.lineWidth = 2.0f;  
  43.  
  44. CPXYAxisSet *axisSet = ( CPXYAxisSet *) graph . axisSet ;  
  45.  
  46. //majorIntervalLength 的類型由 NSDecimalNumber 改變為 NSDecimal  
  47. axisSet. xAxis . majorIntervalLength = [[ NSDecimalNumber decimalNumberWithString : @"5" ] decimalValue ];  
  48. axisSet. xAxis . minorTicksPerInterval = 4 ;  
  49. axisSet. xAxis . majorTickLineStyle = lineStyle;  
  50. axisSet. xAxis . minorTickLineStyle = lineStyle;  
  51. axisSet. xAxis . axisLineStyle = lineStyle;  
  52. axisSet. xAxis . minorTickLength = 5.0f ;  
  53. axisSet. xAxis . majorTickLength = 7.0f ;  
  54.  
  55. //axisLableOffset 屬性由 labelOffset 所代替  
  56. axisSet. xAxis . labelOffset = 3.0f ;  
  57. //      axisSet.xAxis.axisLabelOffset = 3.0f;  
  58.  
  59. axisSet. yAxis . majorIntervalLength = [[ NSDecimalNumber decimalNumberWithString : @"5" ] decimalValue ];  
  60. axisSet. yAxis . minorTicksPerInterval = 4 ;  
  61. axisSet. yAxis . majorTickLineStyle = lineStyle;  
  62. axisSet. yAxis . minorTickLineStyle = lineStyle;  
  63. axisSet. yAxis . axisLineStyle = lineStyle;  
  64. axisSet. yAxis . minorTickLength = 5.0f ;  
  65. axisSet. yAxis . majorTickLength = 7.0f ;  
  66.  
  67. //axisLableOffset 屬性由 labelOffset 所代替  
  68. axisSet. yAxis . labelOffset = 3.0f ;  
  69. //      axisSet.yAxis.axisLabelOffset = 3.0f;  
  70.  
  71. //CPPlotSpace 的 bounds 屬性不再有效  
  72. CPScatterPlot *xSquaredPlot = [[[ CPScatterPlot alloc ]  
  73.    initWithFrame : self . view . bounds ] autorelease ];  
  74. //initWithFrame:graph.defaultPlotSpace.bounds] autorelease];  
  75. xSquaredPlot. identifier = @"X Squared Plot" ;  
  76.  
  77. //CPLineStyle 的 lineColor 和 lineWidth 已經變為只讀屬性  
  78. // xSquaredPlot.dataLineStyle.lineWidth = 1.0f;  
  79. // xSquaredPlot.dataLineStyle.lineColor = [CPColor redColor];  
  80. xSquaredPlot. dataSource = self ;  
  81. [ graph addPlot :xSquaredPlot];  
  82.  
  83. CPPlotSymbol *greenCirclePlotSymbol = [ CPPlotSymbol ellipsePlotSymbol ];  
  84. greenCirclePlotSymbol. fill = [ CPFill fillWithColor :[ CPColor greenColor ]];  
  85. greenCirclePlotSymbol. size = CGSizeMake ( 2.0 , 2.0 );  
  86. xSquaredPlot. plotSymbol = greenCirclePlotSymbol;   
  87.  
  88. //CPPlotSpace 的 bounds 屬性不再有效  
  89. CPScatterPlot *xInversePlot = [[[ CPScatterPlot alloc ]  
  90.    initWithFrame : self . view . bounds ] autorelease ];  
  91. //initWithFrame:graph.defaultPlotSpace.bounds] autorelease];  
  92. xInversePlot. identifier = @"X Inverse Plot" ;  
  93. //CPLineStyle 的 lineColor 和 lineWidth 已經變為只讀屬性  
  94. // xInversePlot.dataLineStyle.lineWidth = 1.0f;  
  95. // xInversePlot.dataLineStyle.lineColor = [CPColor blueColor];  
  96. xInversePlot. dataSource = self ;  
  97. [ graph addPlot :xInversePlot];  
  98. }    
  99. - ( void )dealloc {  
  100.     [ super dealloc ];  
  101. }   
  102. @end 

仔細查看代碼,你會發現原文中的代碼被我做了一些修改和調整。

附一張Core Plot框架的類層次圖,便于理解代碼中各個對象的使用:

注意,右邊各個類的顏色和左邊各個層次的顏色是對應的,如圖所示:

IOS開發框架:Core Plot開源框架使用

小結:IOS開發框架Core Plot開源框架使用的內容介紹完了,希望通過本文的學習能對你有所幫助!

責任編輯:zhaolei 來源: 論壇
相關推薦

2011-08-18 11:19:13

IOS開發Core Plot S

2013-07-24 18:22:02

iOS開發學習iOS開源框架和類

2016-03-18 09:36:13

ios基礎框架

2019-03-01 08:57:47

iOScoobjc協程

2011-08-19 13:51:12

2019-09-02 14:51:33

2014-04-21 15:53:59

iOS開源項目CocoaLumber

2011-06-15 16:11:51

UIKitCocoa TouchiOS

2009-07-03 16:05:06

JSP開發框架

2009-06-19 10:09:00

J2EE開發框架

2012-05-21 21:34:51

iOS

2015-06-24 10:17:24

UI流式布局

2010-08-11 13:17:07

Flex框架

2010-08-05 14:03:32

Flex框架

2011-04-21 10:59:44

SimpleFrameWeb

2018-05-03 19:14:23

iOS開發框架API

2023-11-16 08:34:23

.NETORM框架

2024-05-06 08:44:25

FrugalGPT大型語言模型LLM

2012-10-08 12:59:01

iOS 6.0開發框架功能更新

2014-07-10 10:02:01

iOSHome Kit框架
點贊
收藏

51CTO技術棧公眾號

亚洲成人一区在线| 国产乱人伦精品一区二区在线观看| 精品国产自在久精品国产| 久久成人福利视频| 神马久久久久| 久久国产麻豆精品| 欧美精品video| 国产精品扒开腿做爽爽| 福利一区二区| 亚洲成av人**亚洲成av**| 日韩久久在线| 成人爽a毛片一区二区| 久久久久久夜| 色综合天天狠天天透天天伊人| 中文字幕一区二区久久人妻网站| 亚洲黑人在线| 一本到不卡免费一区二区| 在线一区亚洲| 人操人视频在线观看| 国产精品一区免费在线观看| 日本一区二区三区在线播放| 九九热视频精品| 狠狠色丁香婷婷综合影院| 日韩免费观看高清完整版在线观看| 激情综合网婷婷| 黄色污污视频在线观看| 国产精品久久久久久亚洲伦 | 国产成人免费在线观看不卡| 国产91网红主播在线观看| 精国产品一区二区三区a片| 欧美午夜精品一区二区三区电影| 亚洲国产精品免费| 激情久久综合网| 国产经典一区| 色国产综合视频| 国产中文字幕视频在线观看| 永久免费网站在线| 亚洲欧洲成人av每日更新| 欧美日韩国产综合在线| 无码国产精品一区二区免费16| 国产一区二区三区在线观看免费视频 | 污污的网站在线免费观看| 国产精品蜜臀在线观看| 日本一区免费观看| 九九在线视频| 久久综合色播五月| 久久久www免费人成黑人精品| 亚洲精品网站在线| 国产凹凸在线观看一区二区| 91天堂在线视频| 91theporn国产在线观看| 麻豆成人在线| 国产精品久久久久久久久久久久久 | 天天久久综合| 久久影视电视剧免费网站清宫辞电视| 国产又粗又硬视频| 第一会所sis001亚洲| 亚洲色图13p| 男人舔女人下部高潮全视频| 黑丝美女一区二区| 中文字幕亚洲第一| 波多野结衣喷潮| 亚洲欧洲日韩| 欧美国产日本在线| 日韩成人在线免费视频| 日韩视频一区二区三区在线播放免费观看| 久久久久久久久久av| 午夜偷拍福利视频| 国产日韩欧美一区| 国产不卡av在线| 中文字幕欧美在线观看| 久久99久久久久| 97国产超碰| 免费av网站在线播放| 91在线一区二区三区| 欧美精品尤物在线| 一广人看www在线观看免费视频| 中文字幕一区二区三区在线观看 | 欧美精品在线视频| 亚洲av无码久久精品色欲| 成人精品毛片| 亚洲人成网站999久久久综合| 精品人妻中文无码av在线| 亚欧美无遮挡hd高清在线视频 | 99精品在线播放| 蜜臀av性久久久久蜜臀aⅴ流畅 | 四虎国产精品免费观看| 欧美伦理91i| 一本一道无码中文字幕精品热| 蜜臀a∨国产成人精品| 51国偷自产一区二区三区的来源| 天天综合在线视频| 国产欧美一二三区| 久久久久久av无码免费网站下载| 周于希免费高清在线观看| 欧美日本不卡视频| 岛国精品资源网站| 欧美高清视频手机在在线| 国产69精品久久久久9999| 成人黄色片在线观看| 国产精品1区2区| 奇米精品在线| 国产乱码在线| 欧美日韩精品欧美日韩精品| 少妇精品无码一区二区三区| 日韩免费特黄一二三区| 91chinesevideo永久地址| 91麻豆国产视频| 久久亚洲精品国产精品紫薇| 91视频成人免费| 日韩av免费| 亚洲福利视频久久| 国精产品一区一区二区三区mba| 亚洲黄色在线| 91网站在线看| 在线免费观看的av网站| 五月婷婷另类国产| 免费不卡av网站| 成人免费在线观看av| 久国内精品在线| 国产又黄又粗又长| 久久久久国产精品麻豆| 男女日批视频在线观看| 日本一区二区乱| 日韩中文字幕在线播放| 亚洲乱码国产乱码精品| 波多野结衣视频一区| 中文精品视频一区二区在线观看| 三上悠亚一区二区| 亚洲精品国产精品乱码不99按摩| 日本青青草视频| 久久av中文字幕片| 日韩.欧美.亚洲| 欧美性suv| 亚洲欧美日韩中文在线制服| 久久露脸国语精品国产91| 国产精品亚洲视频| 乱子伦一区二区| 四虎影视成人精品国库在线观看| 亚洲天堂男人的天堂| 日韩不卡在线播放| 26uuu亚洲| 免费看又黄又无码的网站| 亚洲精品aⅴ| 欧美日韩国产二区| 性猛交xxxx乱大交孕妇印度| 亚洲欧美另类综合偷拍| 久久久久久综合网| 伊人青青综合网| 亚洲一区二区中文| 伊人222成人综合网| 欧美一区三区四区| 欧美日韩在线视频免费| 国产传媒久久文化传媒| 男人天堂a在线| 欧美黄色网视频| 欧洲日本亚洲国产区| 欧美婷婷久久五月精品三区| 色噜噜久久综合| 后入内射无码人妻一区| 久久爱另类一区二区小说| 一本—道久久a久久精品蜜桃| 亚洲欧美专区| 欧美国产高跟鞋裸体秀xxxhd| 内射后入在线观看一区| 疯狂欧美牲乱大交777| 波多野吉衣中文字幕| 日韩成人免费电影| 中文字幕一区综合| 香蕉大人久久国产成人av| 欧美激情二区三区| 天堂影院在线| 欧美三级蜜桃2在线观看| 神马久久精品综合| 不卡在线视频中文字幕| 97av视频在线观看| 久久国产电影| 国产v亚洲v天堂无码| 午夜不卡影院| 久久精品91久久香蕉加勒比| 亚洲精品国产suv一区| 欧美日韩免费网站| 网爆门在线观看| 国产高清视频一区| 激情六月丁香婷婷| 午夜影院欧美| 久久综合一区| 久久久久久爱| 国产www精品| 日本高清在线观看| 亚洲女人天堂成人av在线| 一本一道人人妻人人妻αv| 亚洲最新视频在线播放| 中文精品在线观看| 国产一区二区不卡| 蜜臀av无码一区二区三区| 欧美影院三区| 国产在线一区二区三区播放| 玖玖精品在线| 啪一啪鲁一鲁2019在线视频| 黄色免费在线网站| 亚洲人成电影在线观看天堂色| 国产美女自慰在线观看| 欧美日韩中文字幕在线视频| 99久久婷婷国产综合| 久久久国际精品| 国产精久久久久| 蜜桃精品视频在线| 成年人视频网站免费观看| 午夜精品久久| 亚洲黄色成人久久久| 好吊妞国产欧美日韩免费观看网站 | 久久免费在线观看视频| 国产精品乱人伦中文| 久久偷拍免费视频| 国产99久久久精品| 亚洲欧美日本一区二区| 日韩黄色小视频| 国产午夜伦鲁鲁| 伊人狠狠色j香婷婷综合| 公共露出暴露狂另类av| 精品久久影院| 免费试看一区| 日韩高清影视在线观看| 国产精品久久久对白| 粉嫩一区二区三区在线观看| 国产精品成人av在线| 三级在线观看视频| 久久久日本电影| 性欧美videos高清hd4k| 久久亚洲国产成人| 亚洲欧美视频一区二区| 在线成人激情黄色| 成年网站在线| 亚洲一级片在线看| 二区三区在线播放| 尤物tv国产一区| 成人午夜影视| 中文字幕日韩高清| 成人高清在线| 色偷偷偷综合中文字幕;dd| 黄色的视频在线免费观看| 亚洲乱码国产乱码精品精天堂| 四虎永久在线精品免费网址| 精品免费视频.| 欧美一级视频免费| 欧美精品一区二区三区高清aⅴ | 国产婷婷色综合av蜜臀av| 欧美熟妇另类久久久久久不卡| 欧美精品一区二区在线播放| 国精品人妻无码一区二区三区喝尿| 日韩一级片在线播放| 国产成人久久精品77777综合| 欧美一区二区在线观看| 国产精品国产精品国产| 欧美三级电影网站| 97国产精品久久久| 69堂精品视频| 国产成人三级一区二区在线观看一 | 免费不卡中文字幕在线| 日本欧洲国产一区二区| 日韩精品永久网址| 亚洲人体一区| 欧美国产日本| 成人黄色av片| 日韩中文字幕不卡| 色多多视频在线播放| 狠狠色狠狠色综合日日91app| 日韩欧美中文视频| a亚洲天堂av| 日本二区在线观看| 亚洲男帅同性gay1069| 国产在线拍揄自揄拍无码视频| 欧美日韩黄色大片| 国产精品51麻豆cm传媒| 欧美一级二级在线观看| 亚洲欧美色视频| 最近日韩中文字幕中文| 最新黄网在线观看| 1769国内精品视频在线播放| 日本欧美韩国| 亚洲一区久久久| 亚洲人成网77777色在线播放 | 9191国产精品| 秋霞av鲁丝片一区二区| 一本色道久久88综合亚洲精品ⅰ | av女名字大全列表| 日日摸夜夜添一区| 999av小视频在线| 国产精品日日做人人爱| 成人av综合网| 亚洲国产日韩美| 国产综合网站| 日本三级黄色网址| 成人av免费在线| 亚洲欧美精品久久| 欧美日韩一区二区精品| 国产欧美综合视频| 亚洲性线免费观看视频成熟| 91亚洲天堂| 国产精品久久久久久久久久久久久| 伊人精品综合| 亚洲一区尤物| 性8sex亚洲区入口| 黄页网站在线看| 国产精品区一区二区三| 亚洲第一在线播放| 日韩精品一区二区三区蜜臀| yw视频在线观看| 欧美性视频在线| jizz性欧美23| 99re99热| 日韩电影网1区2区| 30一40一50老女人毛片| 亚洲综合色区另类av| 91亚洲精品国偷拍自产在线观看| 日韩精品在线免费观看| 手机在线免费看av| 成人免费视频网址| 欧美老女人另类| 无码人妻丰满熟妇区毛片18| 成人一区二区三区在线观看| 天天爽天天爽天天爽| 欧美性三三影院| 免费黄色在线视频网站| 亚州欧美日韩中文视频| 亚洲1区在线观看| 国产高潮呻吟久久久| 免费在线观看成人| 在线免费观看麻豆| 精品久久久精品| 日韩一区二区三区不卡| 欧美黄色成人网| 99re8这里有精品热视频免费| 特级毛片在线免费观看| 蜜臀va亚洲va欧美va天堂 | 一区二区三区在线看| 国产精品福利电影| 色狠狠av一区二区三区香蕉蜜桃| free欧美| 日韩精品不卡| 日韩国产精品91| 无码人妻丰满熟妇啪啪欧美| 色老头久久综合| 国产一区二区三区福利| 国产91色在线|免| 成人亚洲一区二区| 一本色道久久亚洲综合精品蜜桃 | aaaa欧美| 一区二区不卡在线观看| 久草中文综合在线| www.av免费| 欧美大片顶级少妇| aa级大片免费在线观看| 精品综合在线| 久久久久久久欧美精品| 亚洲午夜久久久久久久国产| 在线观看免费视频综合| 天堂资源在线中文| 成人午夜激情网| 欧美色综合网| 国产精品300页| 欧洲av一区二区嗯嗯嗯啊| 日韩在线免费电影| 99热国产免费| 一本久道久久综合狠狠爱| 加勒比一区二区| 欧美区一区二区三区| 国产剧情在线| 精品不卡在线| 日韩av在线免费观看不卡| 欧美极品jizzhd欧美18| 欧美一区二区三区在线观看| 久草在线视频福利| 欧美精品欧美精品系列c| 久久国产婷婷国产香蕉| 国产亚洲欧美精品久久久久久 | 无遮挡aaaaa大片免费看| 欧美在线你懂的| av片在线观看| 久久大片网站| 精品一区二区在线视频| 国产一级一片免费播放放a| 亚洲人成伊人成综合网久久久| 日韩精品一级毛片在线播放| 成人性生活视频免费看| 欧美激情一区二区三区四区| 精品久久久无码中文字幕| 欧美一级电影在线| 88国产精品视频一区二区三区| 中文字幕 亚洲一区| 欧美精品日韩一区| 手机在线理论片| 99亚洲精品视频| 久久―日本道色综合久久| 国产精品人人妻人人爽| 欧美专区第一页| 欧美久久成人| 嘿嘿视频在线观看| 精品国产乱码久久久久久蜜臀|