swift和oc调用第三方图片库TZImagePickerController(含代码)

18 篇文章 0 订阅
5 篇文章 0 订阅

今天发现用swift调用TZImagePickerController的时候block传入参数没有自动提示,手动输入全错了。用oc可以方便的调用TZImagePickerController。所以下面代码是用oc封装一个可以被swift方便调用的类方法,可以完美使用swift调用这个库

安装库

podfile里面的内容:
pod ‘TZImagePickerController’
然后执行pod install

桥接文件中的内容

//TZImagePickerControllerDemo-Bridging-Header.h
#import "TZImagePickerController.h"
#import "setTzOc.h"

oc的调用方法

这里只写基本用法,直接把选取的图片或者照片添加到一个UIImageView中,不添加到collectionView中

//
//  ViewController.m
//  TZImagePickerControllerDemo
//
//  Created by tdw on 2020/12/8.
//
#import "TZImagePickerController.h"
#import "TZImagePickerControllerDemo-Swift.h"
#import "ViewController.h"

@interface ViewController (){
}
@property (weak, nonatomic) IBOutlet UIImageView *imageV1;
@property (strong,nonatomic)TZImagePickerController* imagePickerVc;
@end

@implementation ViewController

- (void)viewDidLoad {
 
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    [self setTzVc];
}
-(void)setTzVc{
    
    self.imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:9 columnNumber:4 delegate:self];
    self.imagePickerVc.maxImagesCount = 9;
    
    __weak typeof(self) weakSelf = self;
    [self.imagePickerVc setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets, BOOL isSelectOriginalPhoto) {
            NSLog(@"photos=%@",photos);
            NSLog(@"assets=%@",assets);
            NSLog(@"isSelectOriginalPhoto=%d",isSelectOriginalPhoto);
            //这里只显示第一个图片作为例子
            weakSelf.imageV1.image = photos.firstObject;
    }];
   
}
- (IBAction)btnPopTzVCClick:(id)sender {
    //弹出Tz图片控制器
    [self presentViewController:self.imagePickerVc animated:true completion:nil];
}
- (IBAction)btnJumSwiftVCClick:(id)sender {
    //弹出swift代码的控制器
    VC2 *vc = [[VC2 alloc]init];
    [self.navigationController pushViewController:vc animated:true];
    
}
@end

storyBoard中的按钮
在这里插入图片描述

swift调用的时候不能调用里面的block,需要自定义一个类方法

 		let imagePickerVc = TZImagePickerController()
        imagePickerVc.maxImagesCount = 1
        imagePickerVc.didFinishPickingVideoHandle = 
        这段swift代码的didFinishPickingVideoHandle 没法自动提示block参数赋值,解决方法是写一个oc类方法

oc类方法如下:只是让swift能够自动提示方法的参数
setTzOc.h文件

//
//  setTzOc.h
//  TZImagePickerControllerDemo
//
//  Created by tdw on 2020/12/8.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@class TZImagePickerController;
@interface setTzOc : NSObject
+(void)setBlock:(TZImagePickerController*)vc andBlock:(void(^)(NSArray<UIImage *>* , NSArray *, BOOL ))block;
@end

NS_ASSUME_NONNULL_END

setTzOc.m文件

//
//  setTzOc.m
//  TZImagePickerControllerDemo
//
//  Created by tdw on 2020/12/8.
//

#import "setTzOc.h"
#import "TZImagePickerController.h"
@implementation setTzOc
+(void)setBlock:(TZImagePickerController*)vc andBlock:(void(^)(NSArray<UIImage *>* , NSArray *, BOOL ))block{

    [vc setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets, BOOL isSelectOriginalPhoto) {
        block(photos,assets,isSelectOriginalPhoto);
    }];
}
@end

swift代码中的调用封装的oc类

封装以后再打方法会弹出自动提示
在这里插入图片描述
在这里插入图片描述
swift代码如下:

//
//  VC2.swift
//  TZImagePickerControllerDemo
//
//  Created by tdw on 2020/12/8.
//

import UIKit

class VC2: UIViewController {
    var imagePickerVc:TZImagePickerController!
    @IBOutlet weak var imageV1: UIImageView!
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
        imagePickerVc = TZImagePickerController()
        imagePickerVc.maxImagesCount = 1 //这里设置单选
        setTzOc.setBlock(imagePickerVc) {[weak self] (images, assets, isSelectOriginalPhoto) in
            print("images=",images)
            print("assets=",assets)
            print("isSelectOriginalPhoto=",isSelectOriginalPhoto)
            self?.imageV1.image = images.first
        }
    }
    @IBAction func btn1Click(_ sender: Any) {
        self .present(imagePickerVc, animated: true, completion: nil)
    }
    deinit {
        print("deinit")
    }
    
}


在这里插入图片描述
看下运行效果
在这里插入图片描述

最后是代码

我用的最新版的Version 12.2 (12B45b) ios是14.2如果运行不了的朋友可以升级xcode到最新版
代码下载地址:
https://download.csdn.net/download/boildoctor/13583072

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值