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

OC与Swift的相互调用

OC调用Swift方法

1、在 Build Settings 搜索 Packaging ,设置 Defines Module 为 YES

 2、新建 LottieBridge.swift 文件,自动生成桥 ProductName-Bridging-Header.h

 3、在 LottieBridge.swift 中,定义Swift类继承于OC类,声明 @objcMembers@objc ,实现相关方法

import UIKit
import Lottie// 所有方法/属性声明
@objcMembers class MyLottieView: UIView {private let animationView = LottieAnimationView()override init(frame: CGRect) {super.init(frame: frame)self.addSubview(animationView)}override func layoutSubviews() {super.layoutSubviews()animationView.frame = self.bounds}public func setLottieFromURL(_ url: URL?) {if let url = url {LottieAnimation.loadedFrom(url: url) { [weak self] (animation) inself?.animationView.animation = animation}}}public func play() {animationView.play()}
}// 单个方法/属性声明
@objc class MyLottieView: UIView {private let animationView = LottieAnimationView()override init(frame: CGRect) {...}override func layoutSubviews() {...}@objc public func setLottieFromURL(_ url: URL?) {...}@objc public func play() {...}
}

4、在OC代码中引用 ProductName-Swift.h ,调用Swift相关方法

#import "ProductName-Swift.h"- (void)swiftTest {MyLottieView *lottieView = [[MyLottieView alloc] initWithFrame:CGRectMake(100, 100, 320, 320)];[self.view addSubview:lottieView];NSURL *url = [NSURL URLWithString:@"https://assets9.lottiefiles.com/packages/lf20_N0y2Nj.json"];[lottieView setLottieFromURL:url];[lottieView play];
}

Swift调用OC方法

1、在 ProductName-Bridging-Header.h 中加入OC的头声明

#import <YYKit/YYKit.h>
#import <AFNetworking/AFNetworking.h>

2、在Swift代码中调用OC的相关方法

private func OCTest() {let configuration = URLSessionConfiguration.default_ = AFURLSessionManager(sessionConfiguration: configuration)
}
http://www.lryc.cn/news/107831.html

相关文章:

  • 某银行软件测试笔试题
  • SpringMVC概述、SpringMVC的工作流程、创建SpringMVC的项目
  • 一文说清楚支付架构
  • 【Golang 接口自动化00】为什么要用Golang做自动化?
  • Android 架构模式如何选择
  • 深入了解 LoRaWAN® B 类设备
  • KK集团再闯港交所:引领潮流零售市场,2023年一季度业绩增势显著
  • Vue中的组件渲染
  • docker 保存和载入镜像
  • Java框架(九)--Spring Boot入门(1)
  • 2023年第四届“华数杯”数学建模思路 - 案例:随机森林
  • Redis中缓存穿透、击穿、雪崩以及解决方案
  • 系统架构设计师-软件架构设计(6)
  • Knife4j系列--解决不显示文件上传的问题
  • 深入学习Mysql引擎InnoDB、MylSAM
  • 第七章:SpringMVC中
  • MySQL数据库——DQL操作——基本查询
  • Electron 开发,报handshake failed; returned -1, SSL error code 1,错误
  • 知识区博主转型——兼做知识区和改造区博主!!!!!
  • Resnet与Pytorch花图像分类
  • 【NLP概念源和流】 03-基于计数的嵌入,GloVe(第 3/20 部分)
  • 【React】关于组件之间的通讯
  • item_get-小红薯-商品详情
  • 网络安全进阶学习第十课——MySQL手工注入
  • 2.3 网络安全协议
  • Apache Flink概述
  • django使用mysql数据库
  • MongoDB文档--基本概念
  • 【TypeScript】TS入门及基础学习(一)
  • Dockerfile构建LNMP镜像(yum方式)