官方Demo中BalloonMarker 是swift中写,而我的项目中是用OC 写的,所以就得混编了,混编的 swift 其实全部都在一个不可见的 h 文件里面,你只需要 #import "你项目的名字-swift.h"这个文件就可以了,所有混编的 swift 都会在这里声明,不过你需要先编译一次才会在里面可以找到。
但得注意了,但如果你的项目中之前没有混编过swift ,pod的不算,那么如果你直接把BalloonMarker 文件直接拖进去项目,虽然编译器也会创建桥接文件,但编译器是不会默认自动创建-swift.h,你是无法引用BalloonMarker的这种swift文件,
可以检查你的项目是否自动了swift文件 ,在build Settings 搜索header name 中结果中看到在Swift Complier -General 中看到 -Swift.h 文件说明你的项目已经创建
如果没有这个文件,那么你可以这样做:
1.创建一个新的文件Swift.swift
2.确认后会选择保存路径,点击Create Bridging Header,出现如下界面
3.这样就会生成bridging header 文件
4.这样编译器就会自动创建-swift.h,你就可以在在你要是使用的文件导入-swift.h 文件,就可以使用BalloonMarker
BalloonMarker *marker = [[BalloonMarker alloc]
initWithColor: [UIColor colorWithWhite:0/255. alpha:0.7]
font: [UIFont systemFontOfSize:9.0]
textColor: UIColor.whiteColor
insets: UIEdgeInsetsMake(0, 0, 0, 0)];
marker.chartView = _LineChartView;
marker.arrowSize = CGSizeMake(10, 10);
marker.color = [UIColor colorWithHexString:@"e86258"];
marker.minimumSize = CGSizeMake(80.f, 30.f);
marker.charViewSize = _LineChartView.size;
_LineChartView.marker = marker;
5.就像上面的事例,是下面的方法里面用QuartzCore画自己所需要的泡泡,
open override func draw(context: CGContext, point: CGPoint)
{
}
6.在下面的方法传数据进去
NSMutableDictionary *popupTip = [NSMutableDictionary dictionary];
popupTip[@"date"] = model.billDate;
popupTip[@"yStr"] = [NSString stringWithFormat:@"%ld",yVal];
ChartDataEntry *entry = [[ChartDataEntry alloc] initWithX:i y:yVal data:popupTip];// 传入data,是字典类型
7.在这个方法里面获取得到自己传入的数据,设置文字的显示
open override func refreshContent(entry: ChartDataEntry, highlight: Highlight)
{
let data = entry.data as? Dictionary<String, String>
let yStr = data?["yStr"]
let dateStr = data?["date"]
setLabel(String("\(dateStr!) \(yStr!)"))
}
8.只要用点心,慢慢调就能调出来你想要的漂亮的图,charts是很强大的