本文介绍: 1、在 Build Settings 搜索 Packaging设置为 YES2、新建 LottieBridge.swift 文件自动生成桥3、在 LottieBridge.swift 中,定义Swift类继承于OC类,声明或@objc实现相关方法4、在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) in
                self?.animationView.animation = animation
                self?.play()
            }
        }
    }

    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];
}

Swift调用OC方法

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

#import <YYKit/YYKit.h&gt;
#import <AFNetworking/AFNetworking.h&gt;

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

private func OCTest() {
    let configuration = URLSessionConfiguration.default
    _ = AFURLSessionManager(sessionConfiguration: configuration)
}

原文地址:https://blog.csdn.net/z119901214/article/details/131900040

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_14987.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注