标签:ios swift cocoaspod coreplot
最近在研究可用的第三方的图标控件,然后网上搜了之后,感觉功能比较强大的就是CorePlot了,于是就开始研究如何部署到程序中。网上关于这方面的教程比较少,大部分都是objective-c的,而且历史也比较久远,后来找到一篇老外写的blog,讲述在swift中如何使用CorePlot(http://blog.alwold.com/2014/08/07/using-coreplot-with-swift-in-ios/),研究了好久,总算成功安装了。下面就一步一步介绍。
首先建立一个简单的swift工程,工程名字为CorePlot,记住选择language为swift。这里就不再截图详细说明了,不清楚的同学可以看我的上一篇blog
这里我重点说一下如何安装CocoaPods把,因为安装过程耗费了我好久,而且中间有不少点也鲜有提起。
这里有两篇中文的blog比较不错,都由可取之处,供大家了解CocoaPods是什么。
CocoaPods详解之--使用篇 http://blog.csdn.net/wzzvictory/article/details/18737437
CocoaPods安装和使用教程 http://code4app.com/article/cocoapods-install-usage
关于CocoaPods是什么和它的强大我就不多说了,两篇blog都有介绍,我重点说一下我的安装过程。
打开终端,依次输入下面的命令
gem sources --remove https://rubygems.org/ gem sources -a http://ruby.taobao.org/
为了验证ruby镜像 可以输入
gem sources -l注意是字母 hijk L mn 的L,不是数字1
*** CURRENT SOURCES *** http://ruby.taobao.org/
输入下面的命令就开始安装cocoapods
sudo gem install cocoapods
安装执行过程中,会问我吗是不是要更新rake,输入y
安装进程结束之后,执行命令
pod setup这里有得等2,3分钟的的样子
如果这中间都没有报错,就说明你安装成功了。
可以试一下看看我们待会要安装的coreplot:
pod search CorePlot大致会告诉你这样的信息
可以看到最新的CorePlot是1.5.1版本的,也可以看到在github上的源地址。
到这里,cocoapods就安装完成了,接下来我们继续我们的步骤
在终端中 cd到你的swift工程所在的目录,然后执行下面的命令
pod init
接下来是很重要的一个步骤,用vim或者xcode打开并编辑Podfile文件,一定不要直接双击文件打开并编辑,我就是在这上面吃了亏了,搞了好久好久一直提示出错,因为你的textedit会改变原有的一些你肉眼看不出的格式等等。
执行下面的命令用xcode打开并修改podfile
open -a Xcode Podfile
# Uncomment this line to define a global platform for your project platform :ios, '8.0' target 'CorePlot' do pod 'CorePlot', '~> 1.5.1' end target 'CorePlotTests' do end
可以看到在target CorePlot,就是我们一开始新建的工程下面,我们加入了pod CorePlot和相应的版本号。
保存并关闭podfile
在终端执行命令:
pod install
注意最后一行字:
[!] Form now on use 'CorePlot.xcworkspace' .
回头看一下我们的工程目录,你会发现新建了不少东西,其中有一个叫xxx.xcworkspace 的文件,就是以后我们再打开工程时直接双击的文件了。
我们双击打开工程。
利用我上一篇blog介绍的方法建立xxx-Bridging-Header.h 文件。
就是在我们的工程目录中create一个新的class并选择用objective-c做位语言,这样Xcode会自动帮我们建立桥接头文件,不需要我们手动做操作。
在刚建好的CorePlot-Bridging-Header.h文件中添加:
#import "CorePlot-CocoaTouch.h"
打开storyboard,然后在viewcontroller中再添加进来一个view,这个view将作为我们的coreplot控件的承载view,修改这个view的custom class为 CPTGraphHostingView
步骤就不画图了,在storyboard中Assistance Editor模式下,ctrl拖拽刚添加的view到viewcontroller.swift文件中,命名为graphView
我们先编译一下工程,shift+commond+B,编译成功之后,可能会有一些警告,我把版本从8.3改成了8.1,因为1.5.1 的coreplot似乎最高支持到8.1
接下来我们在viewDidLoad方法中添加进下面这些代码:
<span style="white-space:pre"> </span>//creat graph var graph = CPTXYGraph(frame: CGRectZero) graph.title = "Hello Graph" graph.paddingLeft = 0 graph.paddingTop = 0 graph.paddingRight = 0 graph.paddingBottom = 0 //hide the axes var axes = graph.axisSet as CPTXYAxisSet var lineStyle = CPTMutableLineStyle() lineStyle.lineWidth = 0 axes.xAxis.axisLineStyle = lineStyle axes.yAxis.axisLineStyle = lineStyle //add a pie plot var pie = CPTPieChart() pie.dataSource = self pie.pieRadius = (self.view.frame.size.width * 0.9)/2 graph.addPlot(pie) self.graphView.hostedGraph = graph
添加datasource delegate,在开头添加代理: CPTPlotDataSource
编辑代理方法:
func numberOfRecordsForPlot(plot: CPTPlot!) -> UInt { return 4 } func numberForPlot(plot: CPTPlot!, field fieldEnum: UInt, recordIndex idx: UInt) -> NSNumber! { return idx+1 }
import UIKit class ViewController: UIViewController,CPTPlotDataSource { @IBOutlet weak var graphView: CPTGraphHostingView! override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. //creat graph var graph = CPTXYGraph(frame: CGRectZero) graph.title = "Hello Graph" graph.paddingLeft = 0 graph.paddingTop = 0 graph.paddingRight = 0 graph.paddingBottom = 0 //hide the axes var axes = graph.axisSet as CPTXYAxisSet var lineStyle = CPTMutableLineStyle() lineStyle.lineWidth = 0 axes.xAxis.axisLineStyle = lineStyle axes.yAxis.axisLineStyle = lineStyle //add a pie plot var pie = CPTPieChart() pie.dataSource = self pie.pieRadius = (self.view.frame.size.width * 0.9)/2 graph.addPlot(pie) self.graphView.hostedGraph = graph } // dataSource delegate func numberOfRecordsForPlot(plot: CPTPlot!) -> UInt { return 4 } func numberForPlot(plot: CPTPlot!, field fieldEnum: UInt, recordIndex idx: UInt) -> NSNumber! { return idx+1 } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }
利用CorePlot还能画柱状图、折线图等等,我也刚开始学,一起研究吧。
利用CocoasPod在Swift项目中使用CorePlot
标签:ios swift cocoaspod coreplot
原文地址:http://blog.csdn.net/u011156012/article/details/44061411