iOS多张图片选取器

好久没有更新了,现在没有那么忙了,更新一个吧~

之前项目催的比较紧急(其实也就那么一回事),好多功能就以最低标准完成。现在项目开发告一段落,有个功能测试和产品几次强烈建议+特别强调要改善改进——“图片选取”功能!

开始做的功能只能一张一张的选取 ,甚至还带了裁剪功能,无法选择长图等,整个操作体验非常不友好。琢磨着要怎么实现?寻思结论:自己写的话耗时不说,功能还菜的一匹!!!于是乎瞄准第三方库(git、code4App等),刚开始挑选各种神器,拿下来后先体验一番(时间超过1年未更新的直接忽略),最后定了“TZImagePickerController”,这尼玛尼才是完美人生啊,功能强大的直接上天并开炸云彩!!!在此感谢作者为广大开发谋幸福,git源码地址->请点击这里。这完全可以随心所欲地自定义成心中的完美女神,苍天啊,大地啊~~话不再多说,先看看我家女神的代码(swift):

func typeImageSource(with delegate: Any, maxCount: Int, assets: Array) -> Void {

    //图片选取

    guard let naviController = TZImagePickerController(maxImagesCount: maxCount, columnNumber: 4,

                                                      delegate: delegate as? TZImagePickerControllerDelegate,

                                                      pushPhotoPickerVc: true) else {

        return

    }

    //naviBar样式

    naviController.navigationBar.setBackgroundImage(UIImage.fromColor(NSFLVar.sysColor), for: .default)

    naviController.naviTitleFont = UIFont.systemFont(ofSize: 17.0)

    naviController.barItemTextFont = UIFont.systemFont(ofSize: 16.0)

    naviController.modalPresentationStyle = .fullScreen

    //在内部显示拍照按钮、在内部显示拍视频按

    naviController.allowTakePicture = true

    naviController.allowTakeVideo = false

    naviController.showPhotoCannotSelectLayer = true

    naviController.cannotSelectLayerColor = UIColor.white.withAlphaComponent(0.7)

    //只选择图片

    naviController.allowPickingGif = false

    naviController.allowPickingImage = true

    naviController.allowPickingVideo = false

    naviController.allowPickingOriginalPhoto = false

    naviController.allowPreview = true

    //设置是否显示图片序号

    naviController.showSelectedIndex = false

    //自定义“返回”

    naviController.navLeftBarButtonSettingBlock = { (leftButton) -> Void in

        leftButton?.setImage(UIImage(named: "navi_bar_back_white"), for: .normal)

        leftButton?.imageEdgeInsets = UIEdgeInsets(top: 0.0, left: -30.0, bottom: 0.0, right: 0.0)

    }

    //完成样式

    naviController.oKButtonTitleColorDisabled = NSFLVar.sysColor.withAlphaComponent(0.7)

    naviController.oKButtonTitleColorNormal = NSFLVar.sysColor

    //图片列表是否大于0?

    if assets.count > 0 {

        naviController.selectedAssets = NSMutableArray(array: assets)

    }

    //显示

    self.present(naviController, animated: true, completion: { () -> Void in



    })

}

以上就是核心代码,希望对大家有个参考!

另外,在这里有点需要注意的,iOS12和iOS13在自定义tabBar的时候会有所不同,甚至无效(可能处理姿势不对),我想定义成白底黑字的,但无法出效果!最后处理成非白底白字的样式,这样就perfect啦~

附:上面代码直接复制后报错,因为有些方法是我这边用扩展写的,包括有些变量等,需自行修改!

你可能感兴趣的:(iOS多张图片选取器)