最近在研究可用的第三方的图标控件,然后网上搜了之后,感觉功能比较强大的就是CorePlot了,于是就开始研究如何部署到程序中。网上关于这方面的教程比较少,大部分都是objective-c的,而且历史也比较久远,后来找到一篇老外写的blog,讲述在swift中如何使用CorePlot(http://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://www.jb51.cc/article/p-sfpgulxm-dy.html

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!,recordindex idx: UInt) -> NSNumber! {
        return idx+1
    }
    
    
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // dispose of any resources that can be recreated.
    }


}

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



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

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

  1. ios – 无法识别的选择器发送到实例NSTimer Swift

    解决方法让updateTime成为一个类方法.如果它是在一个纯粹的Swift类中,你需要在@objc前面说明该方法的声明,如:

  2. cocoapods – 命令/ bin / sh失败,退出代码23

    适用于所有豆荚,无需豆荚但仍然是同样的错误.有任何想法吗?

  3. iOS编译库/框架链接器标记问题是设备编译而不是模拟器

    背景:我正在尝试使用带有cocoapods的Phonegap.Phonegap已经存在从命令行编译的问题所以我只是将Xcode与生成的项目文件一起使用(并且在使用cocoapods时我无论如何都必须这样做).我用我的问题向Github推送了一个复制的空项目:https://github.com/Dan2552/phonegap-reproducable-issue您可以在repo的根目录中的bui

  4. ios – CocoaPods CorePlot安装显示缺少的框架和丢失的文件

    我是CocoaPods的新手,我正在尝试在我的Podfile中使用此行安装CorePlot:当我在安装后打开.xcworkspace文件时,CorePlot会显示缺少的框架.我将这些链接的二进制文件安装到我的Xcode项目中,但这并没有解决问题.在CorePlot目标中,似乎没有单独的方法来安装框架.这不是唯一的问题.当我尝试在CorePlot库中引用文件时,即使我可以看到CorePlot目标中的文件,我也会收到文件未找到错误:我尝试了以下import语句:都导致同样的错误.我不知道这些问题是否相关.我应

  5. 通用iOS应用程序在TestFlight中的iPad Air 2上不兼容

    您应该为项目和目标设置“有效架构”:armv7,armv7s和arm64.

  6. ios – 如何在不创建新目标的情况下阻止`pod install`将libPods.a添加到“Link with Libraries”构建阶段?

    解决方法要防止集成,您可以使用:

  7. ios – CocoaPods的Pods.xcconfig与现有的冲突

    解决方法你仍然可以吃蛋糕和(部分)吃它.您的目标的xcconfig文件可以包含一个cocoapods:但是,您仍然无法进食的部分是您想要指定已在Pods.xcconfig中设置的标志.我找不到添加到Cocoapods已在所包含文件中设置的路径的方法,例如你想要这个:然而,这一行简单地删除了Cocoapods头部搜索路径,只留下MyOtherIncludes版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。

  8. 通过cocoapods安装适用于iOS的Google Maps SDK会导致链接器错误

    我正在尝试使用cocoapods安装适用于iOS版本1.3.0的GoogleMapsSDK.实际上安装过程很成功,但是当我尝试使用框架时,app构建过程会返回链接器错误,例如:由于某种原因,链接器无法找到框架.我的cocoapods版本是0.20.1.XCode4.6.2.除了谷歌地图SDK,我的项目还有另外两个通过cocoapods添加的库.这是我的Podfile:提前致谢.解决方法您应该看到一个文件“Pods.xcconfig”,其中包含pod正在使用的框架.将应用程序的目标配置更改为基于CocoaP

  9. ios – 类型推断(自动类型检测)如何在swift中工作?

    LLVM如何检测变量是一个字符串?

  10. ios – Swift可选项:语言问题,还是做错了什么?

    应该有可选的类型;type是但是,如果我这样做,它的工作原理:它似乎是基本的替代,但我可能会遗漏一些语言的细微差别.谁能对此有所了解?之后就像暧昧一样,更多,这是我的解决方案:这适用于所有非对象Swift对象,包括Swift字符串,数字等.感谢Viktor提醒我String不是Swift中的对象.如果您知道值的类型,您可以替换任何?使用适当的可选类型,如String?

随机推荐

  1. Swift UITextField,UITextView,UISegmentedControl,UISwitch

    下面我们通过一个demo来简单的实现下这些控件的功能.首先,我们拖将这几个控件拖到storyboard,并关联上相应的属性和动作.如图:关联上属性和动作后,看看实现的代码:

  2. swift UISlider,UIStepper

    我们用两个label来显示slider和stepper的值.再用张图片来显示改变stepper值的效果.首先,这三个控件需要全局变量声明如下然后,我们对所有的控件做个简单的布局:最后,当slider的值改变时,我们用一个label来显示值的变化,同样,用另一个label来显示stepper值的变化,并改变图片的大小:实现效果如下:

  3. preferredFontForTextStyle字体设置之更改

    即:

  4. Swift没有异常处理,遇到功能性错误怎么办?

    本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请发送邮件至dio@foxmail.com举报,一经查实,本站将立刻删除。

  5. 字典实战和UIKit初探

    ios中数组和字典的应用Applicationschedule类别子项类别名称优先级数据包contactsentertainment接触UIKit学习用Swift调用CocoaTouchimportUIKitletcolors=[]varbackView=UIView(frame:CGRectMake(0.0,0.0,320.0,CGFloat(colors.count*50)))backView

  6. swift语言IOS8开发战记21 Core Data2

    上一话中我们简单地介绍了一些coredata的基本知识,这一话我们通过编程来实现coredata的使用。还记得我们在coredata中定义的那个Model么,上面这段代码会加载这个Model。定义完方法之后,我们对coredata的准备都已经完成了。最后强调一点,coredata并不是数据库,它只是一个框架,协助我们进行数据库操作,它并不关心我们把数据存到哪里。

  7. swift语言IOS8开发战记22 Core Data3

    上一话我们定义了与coredata有关的变量和方法,做足了准备工作,这一话我们来试试能不能成功。首先打开上一话中生成的Info类,在其中引用头文件的地方添加一个@objc,不然后面会报错,我也不知道为什么。

  8. swift实战小程序1天气预报

    在有一定swift基础的情况下,让我们来做一些小程序练练手,今天来试试做一个简单地天气预报。然后在btnpressed方法中依旧增加loadWeather方法.在loadWeather方法中加上信息的显示语句:运行一下看看效果,如图:虽然显示出来了,但是我们的text是可编辑状态的,在storyboard中勾选Editable,再次运行:大功告成,而且现在每次单击按钮,就会重新请求天气情况,大家也来试试吧。

  9. 【iOS学习01】swift ? and !  的学习

    如果不初始化就会报错。

  10. swift语言IOS8开发战记23 Core Data4

    接着我们需要把我们的Rest类变成一个被coredata管理的类,点开Rest类,作如下修改:关键字@NSManaged的作用是与实体中对应的属性通信,BinaryData对应的类型是NSData,CoreData没有布尔属性,只能用0和1来区分。进行如下操作,输入类名:建立好之后因为我们之前写的代码有些地方并不适用于coredata,所以编译器会报错,现在来一一解决。

返回
顶部