IOS 06 OC调用Swift第三方框架
前一篇文章05讲述了OC项目,调用Swift代码,在真正的开发过程中,,很多在OC项目中使用Swift第三方框架场景c;因此,我们也知道如何使用Swift在OC项目中编写的三方框架。
实现过程:
1、OCUseSwiftTest;在上一篇文章的基础上,Swift第三方框架通过Pod安装#xff0c;例如:charts框架他是一个用Swift语言编写的图表框架,同时,他可以在OC代码中调用兼容OC调用,因此,并非所有的Swift框架都可以在OC中使用,这一步正常使用。
2、将第三方Swift框架导入桥接文件。
2、第三方Swift框架导入桥接文件。
3、最后,Swift框架中的内容可以正常使用。
添加依赖。
不知道怎么用 CocoaPods 管理依赖,建议先看前面的文章:IOS 01 CocoaPods 安装与使用。
#图表框架#https://github.com/danielgindi/Chartspod 'Charts'
然后通过命令 pod install 安装依赖。
注意:Charts框架,这并不意味着你必须使用这个框架只是这个框架可以在OC中调用,同时,在iOS开发中也很常见c;所以顺便了解一下它的用途。
导入桥接文件。
OCUseSwiftTest-Bridging-Header.h。
//在此文件中导入第三方Swift框架模块@import Charts;
同样,其他Swift框架,还要在这里导入。
使用Swift框架。
首先,通过可视化创建View控件class指向Linechartview,然后将代码逻辑文件Viewcontroler关联起来.m。
//// ViewController.m// OCUseSwiftTest//// Created by jin on 2024/8/16.//#import "ViewController.h"//导入桥接文件#import "OCUseSwiftTest-Bridging-Header.h"#import "OCUseSwiftTest-Swift.h"@interface ViewController ()<ChartViewDelegate>@property (weak, nonatomic) IBOutlet LineChartView *chartView;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. }@end。
显示折线图。
//// ViewController.m// OCUseSwiftTest//// Created by jin on 2024/8/16.//#import "ViewController.h"//导入桥接文件#import "OCUseSwiftTest-Bridging-Header.h"#import "OCUseSwiftTest-Swift.h"@interface ViewController ()<ChartViewDelegate>@property (weak, nonatomic) IBOutlet LineChartView *chartView;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //显示折线图 ///要显示的数据,例如:模拟爱学,1~6月,收入金额 NSArray *datas = @[@30,@40,@80,@70,@20,@20,@30]; NSMutableArray *array = [NSMutableArray array]; for (int i=0; i<datas.count; i++) { ///创建ChartDataentry对象,并将每个点对应的值与x轴对应 绑定y轴 //x是月份,y就是值 ChartDataEntry *entry = [[ChartDataEntry alloc] initWithX:i+1 y:[datas[i] intValue]]; [array addObject:entry]; } //创建一个集合并这个集合赋值 label值可以是空的 LineChartDataSet *set = [[LineChartDataSet alloc] initWithEntries:array label:@"收入金额"]; //创建容器 LineChartData *chartData = [[LineChartData alloc] initWithDataSet:set]; self.chartView.data = chartData; ///以动画的形式绘制折线,动画持续2.5秒 [_chartView animateWithXAxisDuration:2.5];}@end。
增加折线图框架代理方法。
//// ViewController.m// OCUseSwiftTest//// Created by jin on 2024/8/16.//#import "ViewController.h"//导入桥接文件#import "OCUseSwiftTest-Bridging-Header.h"#import "OCUseSwiftTest-Swift.h"@interface ViewController ()<ChartViewDelegate>@property (weak, nonatomic) IBOutlet LineChartView *chartView;@end@implementation ViewController- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. //显示折线图 //设置代理通过他,他可以监听一些事件 _chartView.delegate = self; ///要显示的数据,例如:模拟爱学,1~6月,收入金额 NSArray *datas = @[@30,@40,@80,@70,@20,@20,@30]; NSMutableArray *array = [NSMutableArray array]; for (int i=0; i<datas.count; i++) { ///创建ChartDataentry对象,并将每个点对应的值与x轴对应 绑定y轴 //x是月份,y就是值 ChartDataEntry *entry = [[ChartDataEntry alloc] initWithX:i+1 y:[datas[i] intValue]]; [array addObject:entry]; } //创建一个集合并这个集合赋值 label值可以是空的 LineChartDataSet *set = [[LineChartDataSet alloc] initWithEntries:array label:@"收入金额"]; //创建容器 LineChartData *chartData = [[LineChartData alloc] initWithDataSet:set]; self.chartView.data = chartData; ///以动画的形式绘制折线,动画持续2.5秒 [_chartView animateWithXAxisDuration:2.5];}/// 选择图表中的值///// @param chartView <#chartView description#>/// @param entry <#entry description#>/// @param highlight <#highlight description#>-(void)chartValueSelected:(ChartViewBase *)chartView entry:(ChartDataEntry *)entry highlight:(ChartHighlight *)highlight{ NSLog(@"选择图表中的数值");}/// 选择空白区////// @param chartView <#chartView description#>-(void)chartValueNothingSelected:(ChartViewBase *)chartView{ NSLog(@"选择空白区域");}/// 缩放/// @param chartView <#chartView description#>/// @param scaleX <#scaleX description#>/// @param scaleY <#scaleY description#>-(void)chartScaled:(ChartViewBase *)chartView scaleX:(CGFloat)scaleX scaleY:(CGFloat)scaleY{ NSLog(@"图表缩放");}/// 移动////// @param chartView <#chartView description#>/// @param dX <#dX description#>/// @param dY <#dY description#>-(void)chartTranslated:(ChartViewBase *)chartView dX:(CGFloat)dX dY:(CGFloat)dY{ NSLog(@"图表移动");}@end。
到目前为止,Swift第三方框架已经在OC项目中被调用。到目前为止,Swift第三方框架已经在OC项目中被调用。