试试我做的这个豆荚:
https://github.com/jhonyourangel/ImagePickerWhatsApp
我正在为一个项目搜索类似的图像和视频选择器,但我找不到能够:1.拍照 2.从库中获取图片 3.注册视频 4.从图书馆
当我在寻找时,我希望 facebook 或 mabe google 的 whatsup 有一个可以满足这种需求的 pod,我真的很喜欢 whatsapp 选择器,所以我创建了这个类似于 whatsapp 中的那个。
先决条件
为了使用 ImageVideoPicker,您需要 cocoapods 和已经创建的 xCode 项目
安装
安装 cocoapods 应该足以sudo gem install cocoapods
在终端中运行,如果这不起作用去cocoapods
然后将终端导航到您的项目文件夹,文件扩展名.xcodeproj
所在的位置并运行pod init
这将创建一个名为Podfile
Open the file in a editor ( sublimeText, xCode, atom, vim ... etc ) 的文件,并在下面添加以下行use_frameworks!
pod 'ImagePickerWhatsApp'
或 pod 'ImagePickerWhatsApp', :path => '/Users/aiu/Documents/cocoapods/ImagePickerWhatsApp'
然后只需pod install
在终端中运行并等待完成安装库
如何使用它
添加import ImagePickerWhatsApp
到您的视图控制器类
然后你可以通过调用来调用选择器: let mp = ImageVideoPicker.makeVCFromStoryboard() self.present(mp, animated: true, completion: nil)
代表
要实现委托添加mp.delegate = self
和视图控制器类的范围,您需要导入 iOS 照片框架import Photos
extension ViewController: ImageVideoPickerDelegate {
func onCancel() {
print("no picture selected")
}
func onDoneSelection(assets: [PHAsset]) {
print("selected \(assets.count) assets")
}
}
该函数onDoneSelection
返回一个包含资产位置信息的资产数组:在设备、iTunes 库或 iCloud 上。
如果您只需要显示图像,您可以在集合视图或类似的东西中使用此代码,只需实现此代码和平
var representedAssetIdentifier: String!
func getImageFrom(asset: Phasset) {
representedAssetIdentifier = asset?.localIdentifier
let imageManager = PHCachingImageManager()
imageManager.requestImage(for: asset!, targetSize: self.frame.size, contentMode: .default, options: nil) { (image, _) in
if(self.representedAssetIdentifier == self.asset?.localIdentifier &&
image != nil) {
self.imageView.image = image
}
}
}
这将只显示缩略图,但很棒,因为它还显示了实时照片和视频的缩略图
图像和视频作为数据
该库旨在用于通过网络发送图像或视频,而不是进行花哨的图像或视频编辑。但这并不意味着你不能。你可以做任何事情,因为它返回一个资产数组,但你的工作是实现你需要的。
为了从资产 ImageVideoPicker 中获取数据,ImageVideoPicker 有一种方法将返回带有数据的完成处理程序。
ImageVideoPicker.getDataFrom(asset: asset) { (data) in
if data == nil {
print(data as Any, asset.mediaType, asset.localIdentifier)
} else {
print(data!.count as Any, asset.mediaType, asset.localIdentifier)
}
}
一切都会很有趣