国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

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

2009-07-03 16:05:06

JSP開發框架

2011-06-15 16:11:51

UIKitCocoa TouchiOS

2009-06-19 10:09:00

J2EE開發框架

2015-06-24 10:17:24

UI流式布局

2012-05-21 21:34:51

iOS

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

2014-07-10 10:02:01

iOSHome Kit框架

2012-10-08 12:59:01

iOS 6.0開發框架功能更新
點贊
收藏

51CTO技術棧公眾號

91综合在线| 男人艹女人在线观看| 欧美中文字幕亚洲一区二区va在线| 精品国产91久久久久久浪潮蜜月| 国产国产国产国产国产国产| 亚洲 日韩 国产第一| 91免费观看国产| 久久69av| 国产一二区视频| 国产精品免费福利| 欧美性色19p| 免费精品视频| 波多野在线观看| 91免费国产精品| 欧美区二区三区| 亚洲一区二区三区四区中文字幕| 久久久久国产| 牛牛精品视频在线| 美女日批免费视频| 欧美一区二区三区图| 都市激情亚洲色图| 国产精品人人爽人人做我的可爱| gogogogo高清视频在线| 中文字幕在线亚洲三区| 日韩在线观看网站| 亚洲天堂av老司机| 国产综合视频| 高清不卡av| 制服丝袜影音| 国产精品久久久久久久天堂第1集 国产精品久久久久久久免费大片 国产精品久久久久久久久婷婷 | 亚洲国产精品综合久久久| av在线之家电影网站| 色综合电影网| 久久亚洲春色中文字幕| 亚洲成人资源在线| 国产小视频在线| 97视频精彩视频在线观看| 欧美日韩中文不卡| 亚洲一区二区三区欧美| 久久久久久久久久久国产| 欧美日本亚洲视频| 日韩wuma| 日韩av影视综合网| 18涩涩午夜精品.www| 雨宫琴音一区二区在线| 久久青青视频| 国产美女在线免费观看| 国外成人在线视频网站| 中文字幕综合一区| 天天综合网 天天综合色| 人人精品人人爱| 久久亚洲道色| 最近中文字幕免费mv2018在线| 国产91美女视频| 波多野结衣久草一区| 亚洲区中文字幕| 国产精品国产三级国产普通话99| 欧美激情视频一区二区三区在线播放| av一区在线| 国产理论电影在线观看| 九色在线视频观看| 国产精品一区二区不卡视频| 在线成人中文字幕| 欧美日韩免费一区| gogogo免费视频观看亚洲一| 国产精品久久久久蜜臀| 99精品国自产在线| 黄色av免费在线看| 黄色成人免费看| 四虎永久在线精品免费一区二区| 国产精品福利片| 色黄久久久久久| 欧美无砖砖区免费| 国产日本欧美一区二区| 亚洲日本久久| 欧美91在线| 香蕉久久免费电影| 国产永久av在线| 日本不卡一区在线| 四虎4hu永久免费入口| 亚洲一区亚洲二区亚洲三区| 亚洲欧美日韩中文在线| 久久精品国产精品亚洲| 午夜剧场成人观在线视频免费观看| 国产精品久久a| 欧美日韩第一页| 精品91自产拍在线观看一区| 亚洲成av人**亚洲成av**| 粉嫩蜜臀av国产精品网站| 国产精品v欧美精品v日本精品动漫| 91视频成人| 182在线播放| av一区在线观看| а√最新版地址在线天堂 | 国产精品视频黄色| 欧美午夜精品久久久久久蜜| 国产精品久久久久久av福利| 不卡中文字幕av| 日韩毛片在线观看| 欧美一区二区三区四区高清| 性做久久久久久久久| 亚洲国产精品国自产拍av| 国产精品综合视频| 日本少妇一区二区| 亚洲经典在线| 亚洲一区二区三区| 最新亚洲精品| 亚洲国产中文在线| 成人精品国产亚洲| 日韩脚交footjobhd| 2024短剧网剧在线观看| 国产视频网址在线| 日本一区高清| 最近最新mv在线观看免费高清| 91在线精品| caoporn超碰国产公开| 天天插天天操天天射| 黄网站欧美内射| 日本阿v视频在线观看| 在线国产精品网| 日韩精品久久一区| 精品视频一区二区三区四区| 91黄在线观看| 亚洲影影院av| av免费观看久久| 99在线视频首页| www.久久草| 国产伦精品一区二区三区视频黑人| 国产日韩在线播放| 成人欧美一区二区三区黑人| 国产精品久久久久久久久影视| 欧美性受xxxx黑人猛交| 97视频在线观看播放| 2020久久国产精品| 国产福利成人在线| 成人久久久久爱| 99re在线国产| 国产在线精品一区| 欧美黑人3p| 日韩视频精品| 中国老女人av| 人人妻人人澡人人爽欧美一区双| 日韩精品视频在线观看视频| 亚洲激情免费视频| 国产精品网站免费| 冲田杏梨av在线| 美女激情网站| 日本私人网站在线观看| 北岛玲一区二区三区| 麻豆影视在线观看_| 久草在线视频网站| 超级碰碰久久| 亚洲欧美日本国产| 国产一区二区三区日韩精品| 欧美成人milf| 亚洲激情成人| 韩国三级中文字幕hd久久精品| 99久久综合色| 亚洲免费av在线| 欧美丝袜第一区| 日韩欧美在线影院| 国产午夜精品视频| 午夜精品久久久久久久白皮肤| 国产成+人+综合+亚洲欧美丁香花| 国产在线拍偷自揄拍精品| 国产66精品久久久久999小说| 欧洲久久久久久| 91视频 -- 69xx| 玖玖在线免费视频| 国产精品一区二区三区视频网站| 欧美sm一区| 精品网站aaa| 一区二区亚洲| 成人免费av资源| 亚洲高清视频在线| 欧美精品一区视频| 午夜精品一区二区三区视频免费看| 成人免费视频网| 婷婷视频在线播放| 五月天av在线播放| 一区二区三区视频网站| 国产人妖一区| 日韩av免费大片| 激情综合网最新| 亚洲视频一区二区在线| 欧美日韩精品专区| 久久中文字幕在线| 成人免费在线一区二区三区| 亚洲电影网站| xxav视频| 午夜激情电影在线播放| 五月国产精品| 久久久久久色| 1000精品久久久久久久久| 91精品免费观看| 欧美精品久久一区二区| 久久99蜜桃综合影院免费观看| 又粗又黑又大的吊av| 精品av中文字幕在线毛片| 校园春色 亚洲色图|