利用CocoasPod在Swift项目中使用CorePlot

最近在研究可用的第三方的图标控件,然后网上搜了之后,感觉功能比较强大的就是CorePlot了,于是就开始研究如何部署到程序中。网上关于这方面的教程比较少,大部分都是objective-c的,而且历史也比较久远,后来找到一篇老外写的blog,讲述在swift中如何使用CorePlothttp://blog.alwold.com/2014/08/07/using-coreplot-with-swift-in-ios/),研究了好久,总算成功安装了。下面就一步一步介绍。

1. 建立工程

首先建立一个简单的swift工程,工程名字为CorePlot,记住选择language为swift。这里就不再截图详细说明了,不清楚的同学可以看我的上一篇blog

2. 安装CocoaPods

这里我重点说一下如何安装CocoaPods把,因为安装过程耗费了我好久,而且中间有不少点也鲜有提起。

这里有两篇中文的blog比较不错,都由可取之处,供大家了解CocoaPods是什么。

CocoaPods详解之--使用篇 http://blog.csdn.net/wzzvictory/article/details/18737437

CocoaPods安装和使用教程 http://code4app.com/article/cocoapods-install-usage

关于CocoaPods是什么和它的强大我就不多说了,两篇blog都有介绍,我重点说一下我的安装过程。

1>

打开终端,依次输入下面的命令

gem sources --remove https://rubygems.org/
gem sources -a http://ruby.taobao.org/

这样是为了访问taobao的ruby镜像,因为GFW,在国内没法直接访问cocoapods,所以需要把我们的source设置成taobao的一个镜像网站。注意区分https和http

为了验证ruby镜像  可以输入

gem sources -l

注意是字母 hijk L mn 的L,不是数字1
接下来会显示

*** CURRENT SOURCES ***
http://ruby.taobao.org/

注意,这里面一定只能有一条,如果你的里面仍然有rubygems.org说明没有remove成功,重新试一下上面的命令。

2> 

输入下面的命令就开始安装cocoapods

sudo gem install cocoapods

注意,这里输入完成之后,可能需要等一段时间才能开始下载和安装,我当时是等了大概有3分钟才安装完成。

安装执行过程中,会问我吗是不是要更新rake,输入y

3> 

安装进程结束之后,执行命令

pod setup

这里有得等2,3分钟的的样子

如果这中间都没有报错,就说明你安装成功了。

可以试一下看看我们待会要安装的coreplot:

pod search CorePlot

大致会告诉你这样的信息

可以看到最新的CorePlot是1.5.1版本的,也可以看到在github上的源地址。

到这里,cocoapods就安装完成了,接下来我们继续我们的步骤

3. 

在终端中 cd到你的swift工程所在的目录,然后执行下面的命令

pod init

如果一切正常,在你的工程目录下,会出现一个文件名字叫做Podfile,这个相当于cocoapods的配置文件,告诉我们在工程中将引入哪些第三方的控件。

接下来是很重要的一个步骤,用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

4. 

在终端执行命令:

pod install

又是得耐心地等待一段时间后,会得到下面的结果:

表示我们的corePlot已经安装完成了。

注意最后一行字:

[!] Form now on use 'CorePlot.xcworkspace' .

5. 关闭第一步我们建立的Xcode工程。

回头看一下我们的工程目录,你会发现新建了不少东西,其中有一个叫xxx.xcworkspace
的文件,就是以后我们再打开工程时直接双击的文件了。

我们双击打开工程。

6. 

利用我上一篇blog介绍的方法建立xxx-Bridging-Header.h 文件。

就是在我们的工程目录中create一个新的class并选择用objective-c做位语言,这样Xcode会自动帮我们建立桥接头文件,不需要我们手动做操作。

7. 

在刚建好的CorePlot-Bridging-Header.h文件中添加:

#import "CorePlot-CocoaTouch.h"

8. 

打开storyboard,然后在viewcontroller中再添加进来一个view,这个view将作为我们的coreplot控件的承载view,修改这个view的custom class为
CPTGraphHostingView

9. 建立outlet

步骤就不画图了,在storyboard中Assistance Editor模式下,ctrl拖拽刚添加的view到viewcontroller.swift文件中,命名为graphView

10. 

我们先编译一下工程,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

11. 

添加datasource delegate,在开头添加代理: CPTPlotDataSource

12. 

编辑代理方法:

 func numberOfRecordsForPlot(plot: CPTPlot!) -> UInt {
        return 4
    }

    func numberForPlot(plot: CPTPlot!, field fieldEnum: UInt, recordIndex idx: UInt) -> NSNumber! {
        return idx+1
    }

整个viewController.swift 看起来是这样的

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.
    }

}

接下来就运行一下你的程序,就能看到一个pie被画在了屏幕上

利用CorePlot还能画柱状图、折线图等等,我也刚开始学,一起研究吧。

时间: 2024-08-02 16:38:39

利用CocoasPod在Swift项目中使用CorePlot的相关文章

代码-利用CocoasPod在Swift项目中使用CorePlot源码出现错误

问题描述 利用CocoasPod在Swift项目中使用CorePlot源码出现错误 利用CocoasPod在Swift项目中使用CorePlot,最后运行程序时CorePlot源码出现错误,说函数出现问题,只需要0个参数而代码给了3个参数,可是我没有动过源码,有大神知道问题出在哪里么

有在Swift项目中成功集成环信的案例吗?

问题描述 不知道环信何时才能提供Swift版SDK,现在大家做iOS集成时,用Swift项目集成目前的OC版SDK有遇到什么坑?欢迎在此讨论分享一下. 解决方案 我们是支持混编的,已经有小伙伴用swift成功集成环信了,可以放心!解决方案二:当然支持混编,我的意思是能否尽快发布Swift混编的集成教程.视频.一步步地摸索都是坑啊.解决方案三:SDK都是以oc为接口,swift调用都是没问题的,可以先看看oc的集成视频.解决方案四:视频在哪??解决方案五:环信集成入门视频链接:http://i.y

Swift项目中利用SWRevealViewController实现侧滑菜单_Swift

像往常一样,我们还是创建一个Demo App 来展示一下具体如何使用SWRevealViewController.这个Demo 很简单,功能上也不完善,主要的目的只是引导你去了解如何实现侧滑菜单. 我们将要实现的侧滑菜单大概是这个样子的: 用户可以单击左上角的列表按钮来显示侧滑菜单 用户也可以右滑内容视图来显示侧滑菜单 侧滑菜单显示的时候,用户可以再次单击列表按钮来关闭它 用户也可以左滑内容区域来关闭它 新建一个 Xcode 项目这篇文章的主要目的是讲解侧滑菜单的实现,所以为了节省你的时间,你可

Swift &amp; Objc 在同一个项目中的使用

在WWDC大会中发布了Swift让人眼前一亮.终于加了很多的现代编程语言该有的东西.很早年以前玩C#3.0+的时候这些差不多类似的 已经用的烂熟的东西终于一点一点的在看Swift Programming Language的时候再唤醒.     Swift较之于OC(Objective-C)在愈发上几乎是一门新的语言了,幸运的是Swift和OC都是出自苹果大家庭,还能在一张桌子上吃饭.也就是说在升级项目 的时候你可以考虑使用Swift开发新的功能,调用已有的部分或者被已有的部分调用.或者在Swif

在 Xcode 项目中使用 swift package fetch

本文讲的是在 Xcode 项目中使用 swift package fetch, 到目前为止,Cocoa with Love 的 git 仓库都使用"git subtrees"来管理相关依赖,所有的依赖都被拷贝并静态存放于依赖方目录下.我希望能找到一种更动态地依赖管理方式来代替现有的方案,同时保持对库使用者的不可见性.(译者注:Cocoa with Love) 我想要使用 Swift 包管理工具(Swift Package Manager)来解决这个问题,但我又不希望所有的仓库都必须依赖

《Swift iOS应用开发实战》——3.2Calculator项目中的控制器

3.2Calculator项目中的控制器 在Calculator项目中,ViewController.swift文件中所定义的ViewController类就是一个视图控制器,与它关联的视图就是Main.storyboard文件中ViewController场景里面的View,如图3-2所示.如果我们选择故事板中ViewController场景中的控制器,然后按Command+Option+3快捷键切换到标识检视窗,就会看到Custom Class部分的Class被设置为ViewControll

在项目中利用TX Text Control进行WORD文档的编辑显示处理

在很多文档管理的功能模块里面,我们往往需要对WORD稳定进行展示.编辑等处理,而如果使用微软word控件进行处理,需要安装WORD组件,而且接口使用也不见得简单易用,因此如果有第三方且不用安装Office的能够展示WORD及进行编辑,那是比较不错的选择,TX Text Control就是这样的控件,本文就是基于这个控件的使用,实现在文档管理项目中的应用. 1.TX Text Control的介绍及使用 TX Text Control是一款功能类似于 MS Word 的文字处理控件,包括文档创建.

webpack, react项目中利用外部JS库提升效率

前言 现在很多前端项目在构建时,都是一个vendor 公共JS文件和和一个app.js的文件,会造成一些弊端. 在项目的开发过程中,修改任何一个地方,都会触发JS的全局构建,需要等待非常久,长久下来大大的降低了开发效率. 另外一个弊端就是每次构建上线,vendor和app每次都会改变,任何一个小的更改都会使2个文件都改变,再次发布上线,用户的第一次加载速度都会很慢. 问题分析 实际在项目的过程中,依赖的外部库一般都会不改变的,所以可以把这一部分代码作为一个外部库,发布上线后通过CDN引入,无论再

MVC模式在j2me项目中的应用(一)

项目 MVC模式在j2me项目中的应用(一)作者:FavoYang Email:favoyang@yahoo.com 欢迎交流Keywords:MVC j2me UI模式 内容提要:本文简要的介绍了MVC模式的思想,并分析了MVC模式的利弊,最后结合MIDP平台给出几种常见的MVC模式实践.相信此文对任何一个使用midp平台的商务程序开发者都或多或少的有所帮助. 版权声明:本文同时发表在www.j2medev.com和我的Blog(blog.csdn.net/alikeboy)上,如果需要转载,