当前位置: 首页 > news >正文

IOS 06 OC调用Swift第三方框架

前面文章05讲的是在OC项目中,调用Swift代码,而在真实开发过程中,在OC项目中调用Swift第三方框架场景用的是非常多的,所以我们也了解在OC项目如何使用Swift写的三方框架。

实现流程:

1、OCUseSwiftTest;在上一篇文章的基础上,通过Pod安装Swift第三方框架,例如:Charts框架,他是一个使用Swift语言编写的图表框架,同时他是兼容OC调用的才能在OC代码中调用,所以并不是所有Swift框架都能在OC中使用,这一步是正常使用。

2、在桥接文件中导入第三方Swift框架。

3、最后就能正常使用Swift框架中的内容了。

添加依赖

还不了解如何使用 CocoaPods 管理依赖的,建议先看前面的文章:IOS 01 CocoaPods 安装与使用

#图表框架
#https://github.com/danielgindi/Charts
pod 'Charts'

然后通过命令 pod install 安装依赖。

注意:本文中的Charts框架,不是说一定要用该框架,只是该框架正好能在OC中调用,同时在iOS开发中也挺常用,所以顺带了解一下它的使用。

在桥接文件中导入

OCUseSwiftTest-Bridging-Header.h

//在这个文件导入第三方Swift框架模块
@import Charts;

同样,其他的Swift框架,也要在这里导入。

使用Swift框架

首先通过可视化创建一个View控件,class指向LineChartView,然后关联到代码逻辑文件ViewController.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

至此完成了在OC项目中调用Swift第三方框架。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 深度学习 —— 个人学习笔记17(锚框、多尺度锚框)
  • Particle Swarm Optimization粒子群算法
  • Exchange Online P1 AO Sub Add-on to Device Exchange Std 产品详细介绍
  • Ted靶机设置
  • AI浪潮下的教育革新:把握机遇,拥抱变化!
  • Qt 0814作业
  • Eureka原理与实践:深入探索微服务架构的核心组件
  • Java虚拟机:类的加载机制
  • 智慧安防/一网统管/视频监控EasyCVR视频汇聚平台的视频轻量化特点及应用
  • 随手记录第十四话 -- 在 Spring Boot 3.2.3 中使用 springdoc-openapi-starter-webmvc-ui
  • Vue项目封装请求路径
  • 【Vue-video】Video 封装组件-Copy直接用解决封装BUG
  • 作为web3D的核心,webGL会被webGPU取代吗?
  • 视频汇聚/安防综合管理系统EasyCVR非管理员账户能调用分配给其他用户的通道是什么原因?
  • Ps:首选项 - 增效工具
  • ES6指北【2】—— 箭头函数
  • 【Linux系统编程】快速查找errno错误码信息
  • 2018一半小结一波
  • CSS 三角实现
  • docker容器内的网络抓包
  • export和import的用法总结
  • java2019面试题北京
  • Javascript基础之Array数组API
  • Python打包系统简单入门
  • React-Native - 收藏集 - 掘金
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • SSH 免密登录
  • 从0实现一个tiny react(三)生命周期
  • 电商搜索引擎的架构设计和性能优化
  • 工作手记之html2canvas使用概述
  • 技术发展面试
  • 聚簇索引和非聚簇索引
  • 面试遇到的一些题
  • 深入浅出webpack学习(1)--核心概念
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 原生js练习题---第五课
  • 运行时添加log4j2的appender
  • 再谈express与koa的对比
  • Android开发者必备:推荐一款助力开发的开源APP
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​​​​​​​​​​​​​​Γ函数
  • ​低代码平台的核心价值与优势
  • ​决定德拉瓦州地区版图的关键历史事件
  • ‌U盘闪一下就没了?‌如何有效恢复数据
  • #Linux(帮助手册)
  • #Linux(权限管理)
  • #NOIP 2014# day.1 生活大爆炸版 石头剪刀布
  • $().each和$.each的区别
  • (1)SpringCloud 整合Python
  • (6)设计一个TimeMap
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (void) (_x == _y)的作用
  • (附源码)spring boot校园拼车微信小程序 毕业设计 091617
  • (三)uboot源码分析