Ответ 1
Попробуйте этот замечательный API в быстрой: ImagePicker. Как и все другие API изображений, он прост в использовании и очень хорошо обновляется.
В iPhone OS 3.0 Apple добавила возможность обмениваться несколькими изображениями одновременно, используя кнопку "Поделиться" и выбирая несколько изображений (где используется галочка).
Я хотел бы иметь UIImagePickerController, который позволяет пользователю выбирать несколько изображений одновременно, вместо того, чтобы идти по одному. Есть ли способ сделать это, или я должен ждать, пока они не добавят эту функцию?
Попробуйте этот замечательный API в быстрой: ImagePicker. Как и все другие API изображений, он прост в использовании и очень хорошо обновляется.
AssetLibrary + UICollectionView ^^
В принципе, при StoryBoard вы импортируете UINavigationController
, вы измените корневой контроллер на UICollectionViewController
(будет ваш список альбомов), добавьте еще один UICollectionViewController
(будет ваш список фотографий).
Затем с Assetlibrary вы извлекаете альбомы пользователей и содержимое пользовательского альбома.
Я сделаю такой компонент, как только у меня будет время.
1. установить модуль - модуль "BSImagePicker", "~> 2.8"
3. Вставьте код ниже .swift file-
import UIKit
import BSImagePicker
import Photos
class MultipleImgViC: UIViewController {
@IBOutlet weak var imageView: UIImageView!
var SelectedAssets = [PHAsset]()
var photoArray = [UIImage]()
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func selectImages(_ sender: Any) {
let vc = BSImagePickerViewController()
self.bs_presentImagePickerController(vc, animated: true, select: { (assest: PHAsset) -> Void in
},
deselect: { (assest: PHAsset) -> Void in
}, cancel: { (assest: [PHAsset]) -> Void in
}, finish: { (assest: [PHAsset]) -> Void in
for i in 0..<assest.count
{
self.SelectedAssets.append(assest[i])
}
self.convertAssetToImages()
}, completion: nil)
}
@IBAction func dismissview(_ sender: Any) {
dismiss(animated: true, completion: nil)
}
}
extension MultipleImgViC{
func convertAssetToImages() -> Void {
if SelectedAssets.count != 0{
for i in 0..<SelectedAssets.count{
let manager = PHImageManager.default()
let option = PHImageRequestOptions()
var thumbnail = UIImage()
option.isSynchronous = true
manager.requestImage(for: SelectedAssets[i], targetSize: CGSize(width: 200, height: 200), contentMode: .aspectFill, options: option, resultHandler: {(result,info) -> Void in
thumbnail = result!
})
let data = thumbnail.jpegData(compressionQuality: 0.7)
let newImage = UIImage(data: data!)
self.photoArray.append(newImage! as UIImage)
}
self.imageView.animationImages = self.photoArray
self.imageView.animationDuration = 3.0
self.imageView.startAnimating()
}
}
}
Примечание: - если файл pod дает "Как исправить", SWIFT_VERSION "3.0" не поддерживается, поддерживаемые версии: 4.0, 4.2, 5.0 "ошибка в Xcode 10.2?" Эта ошибка, а затем устраните ее по этой ссылке: - fooobar.com/questions/17229558/...
ссылка на видео: - https://youtu.be/B1DelPi1L0U
Вы можете использовать этот OpalImagePicker следующим образом (Swift 4):
var imagePicker: OpalImagePickerController
imagePicker = OpalImagePickerController()
imagePicker.imagePickerDelegate = self
imagePicker.selectionImage = UIImage(named: "aCheckImg")
imagePicker.maximumSelectionsAllowed = 3 // Number of selected images
present(imagePicker, animated: true, completion: nil)
А затем реализовать его делегат:
func imagePickerDidCancel(_ picker: OpalImagePickerController) {
//Cancel action
}
func imagePicker(_ picker: OpalImagePickerController, didFinishPickingImages images: [UIImage]) {
}
Как насчет этого способа:
Сначала откройте "photos.app", выберите несколько фотографий и скопируйте их.
В своем собственном приложении попробуйте получить эти копии фотографий;
Я знал, что есть некоторые приложения, вроде этого, но не знаю, как достичь шага 2.