2022-10-28

作者: 蝉始鸣 | 来源:发表于2022-10-27 10:56 被阅读0次

    OC调用 3.5.0 Swift版本 Lottie

    //  LottieView.swift

    //  Lottie-test

    //

    //  Created by Macmini on 2022/10/26.

    //

    因为Lottie 没有暴露方法属性给OC文件 所以需要我们自建Swift文件 集成Lottie供OC调用 

    importUIKit

    importLottie

    // @objcMembers 暴露 所有方法 属性给OC文件

    @objcMembers class LottieView: UIView {

        //加载 URL 地址

         func showAnimation(url:URL,completionBlock: LottieCompletionBlock? = nil) -> Void {

             let animation = LottieAnimationView.init(frame: self.bounds)

             animation.loopMode= .playOnce

             animation.contentMode = .scaleAspectFit

             self.addSubview(animation)

             LottieAnimation.loadedFrom(url: url , closure: { ani in

                 animation.animation= ani

                 animation.play(completion: { completionin

                     ifThread.isMainThread{

                         completionBlock!(completion)

                     }else{

                         DispatchQueue.main.async{

                             completionBlock!(completion)

                         }

                     }

                     self.removeFromSuperview()

                 })

             },animationCache: LRUAnimationCache.sharedCache)

         }

     //    加载 本地JSON文件

         func show(name: String, completionBlock: LottieCompletionBlock? = nil) -> Void{

             let lota = LottieAnimationView.init(frame: self.bounds)

             lota.loopMode= .playOnce

             lota.contentMode = .scaleAspectFit

             self.addSubview(lota)

             let  animation =LottieAnimation.named(name,animationCache: LRUAnimationCache.sharedCache)

             lota.animation= animation

             lota.play{ completionin

                 if Thread.isMainThread {

                     completionBlock!(completion)

                 }else{

                     DispatchQueue.main.async{

                         completionBlock!(completion)

                     }

                 }

                 self.removeFromSuperview()

             }

         }

     //    加载文件路径

         func show(filePath:String, completionBlock: LottieCompletionBlock? = nil) -> Void {

             let lota = LottieAnimationView.init(frame: self.bounds)

             lota.loopMode= .playOnce

             lota.contentMode = .scaleAspectFit

             self.addSubview(lota)

             let  animation =LottieAnimation.filepath(filePath,animationCache: LRUAnimationCache.sharedCache)

             lota.animation= animation

             lota.play{ completionin

                 if Thread.isMainThread {

                     completionBlock!(completion)

                 }else{

                     DispatchQueue.main.async{

                         completionBlock!(completion)

                     }

                 }

                 self.removeFromSuperview()

             }

         }

    }

    以上为自建Swift文件内容 

    OC调用

     LottieView * one = [[LottieView alloc]initWithFrame:CGRectMake(0,0,375,668)];

        [UIApplication.sharedApplication.keyWindow addSubview:one];

    //            @"https://s3-lover-live.s3.ap-southeast-1.amazonaws.com/829e456bb72b8d09c7d1784d0edfe92f"

        if(sender.tag==1) {

            [one showAnimationWithUrl:[NSURL URLWithString:@"https://s3-lover-live.s3.ap-southeast-1.amazonaws.com/1c6592104bd4882793e54a9e53560f53"] completionBlock:^(BOOL completion) {

            }];

        }else //if (sender.tag == 2)

        {

            [one showWithName:@"data"completionBlock:^(BOOLcompletion) {


            }];

        }

    相关文章

      网友评论

        本文标题:2022-10-28

        本文链接:https://www.haomeiwen.com/subject/fvnxtdtx.html