-
本篇筆記的背景前提:
要采用和
Android一致的圖表界面 MPAndroidChart。所以選擇了同一作者以Swift寫的圖表庫(kù) Charts。
因?yàn)楣こ烫?,所以依舊是用Objective-C編寫的工程,沒(méi)有轉(zhuǎn)型Swift編寫工程。
那么,自然的,我就得選擇Objective-C與Swift混編。此處工程的前提是:Xcode 8.2.1,Charts 3.0.1
此處工程的前提是:Xcode 8.3.1,Charts 3.0.2
此處工程的前提是:Xcode 9.0.1,Charts 3.0.4
此處Demo的環(huán)境是:Xcode 9.3,Charts 3.1.1
-
如果,你的工程恰巧也是
Objective-C編寫的,而今要使用Charts。那么,請(qǐng)繼續(xù)往下看。如果,你的是Swift創(chuàng)建的工程,也要使用Charts。那么,抱歉了。我的這篇筆記,好像幫不上任何忙。畢竟Swift調(diào)用Swift寫的Charts 庫(kù),應(yīng)該是調(diào)用很自然的。
很多用到Objective-C和Swift混編的開(kāi)發(fā)者都知道,混編在編譯、運(yùn)行的時(shí)候,挺慢的。尤其是,工程代碼量越大,運(yùn)行越慢。而此處的Charts庫(kù)本就很大。編譯慢在所難免。何況在Xcode 8中Swift本身就編譯頗慢。Objective-C和Swift的混編,在Xcode 8.3之后,稍有改觀,編譯和運(yùn)行會(huì)快一些。很多開(kāi)發(fā)者大概知道很多圖表庫(kù),諸如:ECharts、ZFChart等等,但是,由于我在開(kāi)發(fā)中需要與Android端采取同樣界面的圖表庫(kù)。所以,我只能選擇這個(gè)Charts庫(kù)進(jìn)行混編。
如果,你僅僅需要一些簡(jiǎn)單的圖表功能,又是Objective-C工程,不需要和Android保持界面相同,并且想要靠譜的編譯速度,那就不太建議用這個(gè)庫(kù)。甚至建議你手碼一個(gè)圖表庫(kù)。
考慮到性能問(wèn)題的(比如內(nèi)存),建議使用WKWebview加載本地Echarts圖表頁(yè)面。
-
準(zhǔn)備工作:
在此假設(shè)你已經(jīng)安裝好
Cocoapods了。
如果你還未安裝Cocoapods,請(qǐng)參考此鏈接:Cocoapods安裝&解決安裝錯(cuò)誤&使用已經(jīng)創(chuàng)建好了一個(gè)由
Objective-C編寫的工程。然后,關(guān)掉該打開(kāi)的工程。
-
Tips:
如果你很熟練使用pod命令,請(qǐng)?zhí)^(guò)以下內(nèi)容。如果不熟練,這里給出了還算詳細(xì)的過(guò)程供予參考。 -
打開(kāi)
終端或者ITerm。 -
依次執(zhí)行如下命令行:
cd 把工程直接拖過(guò)來(lái) //敲擊return鍵//新建一個(gè)Podfile文件 touch Podfile? //敲擊return鍵//使用xcode打開(kāi)文件 open -a xcode Podfile? //敲擊return鍵 //在 Xcode 打開(kāi)的 Podfile文件 中編輯你需要內(nèi)容
-
在Xcode打開(kāi)的Podfile中,輸入如下內(nèi)容:
platform :ios, '8.0' use_frameworks! target 'testCharts' do pod 'Charts' pod 'ChartsRealm' end
-
導(dǎo)入庫(kù)
pod install導(dǎo)入成功后 .png//雙擊 .xcworkspace 文件,打開(kāi)工程 //或者使用命令行打開(kāi) open -a xcode Hi.xcworkspace
-
創(chuàng)建Swift文件,以此來(lái)創(chuàng)建橋接文件。
command+n,創(chuàng)建Swift文件.png

選擇create bridging header,Objective-C工程要用Swift文件,需要用到橋接文件.png

-
配置
-
Tips:此時(shí)編譯,會(huì)出錯(cuò)。因?yàn)?
Swift 庫(kù)的Swift Language Version的問(wèn)題。 -
以下是編譯后出現(xiàn)的錯(cuò)誤:
Error:The “Swift Language Version” (SWIFT_VERSION)build settingmust be set to a supported value for targets which useSwift. This setting can be set in thebuild settingseditor.錯(cuò)誤的意思很簡(jiǎn)單,就是
Cocoapods 管理的第三方框架版本出現(xiàn)了一些問(wèn)題。解決辦法(無(wú)論是否編譯,均需走此配置):選擇Pods -> Targets -> Charts/ChartsRealm/RealmSwift -> Swift Compiler - Language -> Swift Language Version -> Swift x.x,即把 Unspecified 改成最新的Swift版本即可。
如果是個(gè)別框架的問(wèn)題,則需要單獨(dú)選擇某個(gè)框架來(lái)設(shè)置Swift Language Version版本。Swift Language Version 問(wèn)題.png-
特別注意:此處,先Clean一下,再編譯一下 -
在
橋接文件項(xiàng)目名-Bridging-Header.h中,寫上要引用的Swift頭文件。
@import Charts; -
-
測(cè)試:
-
在ViewController.m中加入如下測(cè)試代碼:
#import "ViewController.h" #import "Hi-Bridging-Header.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor grayColor]; BarChartView *chartView = [[BarChartView alloc] initWithFrame:self.view.bounds]; chartView.backgroundColor = [UIColor colorWithRed:0.184 green:1.000 blue:0.738 alpha:1.000]; [self.view addSubview:chartView]; } @end-
Tips:當(dāng)然,此時(shí)此刻,你可以把之前創(chuàng)建的
swift文件刪除掉了。
-
-
運(yùn)行效果如圖:
-
因?yàn)闆](méi)有數(shù)據(jù)。所以,只要這樣的提示。此時(shí),表示已經(jīng)集成成功。
-
效果如圖所示.png

-
Error的處理:如果,你之前已經(jīng)在項(xiàng)目中使用了
Charts圖表庫(kù)。
而現(xiàn)在,Charts 庫(kù)已由Swift 2.3Swift 3.0版本升級(jí)為Swift 3.0Swift 4.0版本。
如果你未執(zhí)行pod update,卻以8.3版本以后的Xcode打開(kāi)了工程,會(huì)有如下圖所示的提示Swift 版本的更新。提示更新.png所以,需要在
Podfile文件的內(nèi)容中,即 最后一行pod 'xxx'和 末尾的end之間加入這樣一段代碼。-
如下所示。
# Swift2.3升級(jí)到Swift3,語(yǔ)法有比較大的改動(dòng),所以在Xcode 8下需要設(shè)置Swift的版本適配語(yǔ)法問(wèn)題。 # 方法一: # 使用CocoaPods,在 Podfile 添加 SWIFT_VERSION 配置,然后執(zhí)行 pod install。Podfile添加配置如下 # 如果是適配2.3,那么改為config.buildsettings['SWIFTVERSION'] = '2.3' Unspecified 改為YES或者NO (其實(shí),默認(rèn)Xcode 8默認(rèn)是NO) post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['SWIFT_VERSION'] = '3.0' end end end # 方法二: # 打開(kāi)項(xiàng)目或者庫(kù)的Build Settings。 # 把Swift Compiler Version屬性"Use Legacy Swift Language Version"把 # 其實(shí),上面這段代碼可以廢棄了。直接從上面的 配置 一欄中講到的 Swift Language Version 設(shè)置即可。 -
-
Charts折線圖·簡(jiǎn)單使用
-
抽空我會(huì)上傳到
github具體demo,純 Objective-C 代碼版創(chuàng)建Charts。注釋,我會(huì)盡可能寫的詳細(xì)些。` -
Github上 Charts demo地址 · 請(qǐng)點(diǎn)擊
-



