iOS多张图片选取器
2020-04-23 本文已影响0人
qhzq1987
好久没有更新简书了,现在没有那么忙了,更新一个简书吧~
之前项目催的比较紧急(其实也就那么一回事),好多功能就以最低标准完成。现在项目开发告一段落,有个功能测试和产品几次强烈建议+特别强调要改善改进——“图片选取”功能!
开始做的功能只能一张一张的选取 ,甚至还带了裁剪功能,无法选择长图等,整个操作体验非常不友好。琢磨着要怎么实现?寻思结论:自己写的话耗时不说,功能还菜的一匹!!!于是乎瞄准第三方库(git、code4App等),刚开始挑选各种神器,拿下来后先体验一番(时间超过1年未更新的直接忽略),最后定了“TZImagePickerController”,这尼玛尼才是完美人生啊,功能强大的直接上天并开炸云彩!!!在此感谢作者为广大开发谋幸福,git源码地址->请点击这里。这完全可以随心所欲地自定义成心中的完美女神,苍天啊,大地啊~~话不再多说,先看看我家女神的代码(swift):
func typeImageSource(with delegate: Any, maxCount: Int, assets: Array<Any>) -> 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啦~
附:上面代码直接复制后报错,因为有些方法是我这边用扩展写的,包括有些变量等,需自行修改!