1
A
回答
19
我用你想要的視圖控制器中調用雨燕3
//
// DSCameraHandler.swift
//
// Created by David Seek on 23.04.17.
// Copyright © 2016 David Seek. All rights reserved.
//
import MobileCoreServices
import UIKit
class DSCameraHandler: NSObject {
private let imagePicker = UIImagePickerController()
private let isPhotoLibraryAvailable = UIImagePickerController.isSourceTypeAvailable(.photoLibrary)
private let isSavedPhotoAlbumAvailable = UIImagePickerController.isSourceTypeAvailable(.savedPhotosAlbum)
private let isCameraAvailable = UIImagePickerController.isSourceTypeAvailable(.camera)
private let isRearCameraAvailable = UIImagePickerController.isCameraDeviceAvailable(.rear)
private let isFrontCameraAvailable = UIImagePickerController.isCameraDeviceAvailable(.front)
private let sourceTypeCamera = UIImagePickerControllerSourceType.camera
private let rearCamera = UIImagePickerControllerCameraDevice.rear
private let frontCamera = UIImagePickerControllerCameraDevice.front
var delegate: UINavigationControllerDelegate & UIImagePickerControllerDelegate
init(delegate_: UINavigationControllerDelegate & UIImagePickerControllerDelegate) {
delegate = delegate_
}
func getPhotoLibraryOn(_ onVC: UIViewController, canEdit: Bool) {
if !isPhotoLibraryAvailable && !isSavedPhotoAlbumAvailable { return }
let type = kUTTypeImage as String
if isPhotoLibraryAvailable {
imagePicker.sourceType = .photoLibrary
if let availableTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary) {
if availableTypes.contains(type) {
imagePicker.mediaTypes = [type]
imagePicker.allowsEditing = canEdit
}
}
} else if isPhotoLibraryAvailable {
imagePicker.sourceType = .savedPhotosAlbum
if let availableTypes = UIImagePickerController.availableMediaTypes(for: .savedPhotosAlbum) {
if availableTypes.contains(type) {
imagePicker.mediaTypes = [type]
}
}
} else {
return
}
imagePicker.allowsEditing = canEdit
imagePicker.delegate = delegate
onVC.present(imagePicker, animated: true, completion: nil)
}
func getCameraOn(_ onVC: UIViewController, canEdit: Bool) {
if !isCameraAvailable { return }
let type1 = kUTTypeImage as String
if isCameraAvailable {
if let availableTypes = UIImagePickerController.availableMediaTypes(for: .camera) {
if availableTypes.contains(type1) {
imagePicker.mediaTypes = [type1]
imagePicker.sourceType = sourceTypeCamera
}
}
if isRearCameraAvailable {
imagePicker.cameraDevice = rearCamera
} else if isFrontCameraAvailable {
imagePicker.cameraDevice = frontCamera
}
} else {
return
}
imagePicker.allowsEditing = canEdit
imagePicker.showsCameraControls = true
imagePicker.delegate = delegate
onVC.present(imagePicker, animated: true, completion: nil)
}
}
以下爲:
extension ViewController: UINavigationControllerDelegate, UIImagePickerControllerDelegate {
func thisIsTheFunctionWeAreCalling() {
let camera = DSCameraHandler(delegate_: self)
let optionMenu = UIAlertController(title: nil, message: nil, preferredStyle: .actionSheet)
optionMenu.popoverPresentationController?.sourceView = self.view
let takePhoto = UIAlertAction(title: "Take Photo", style: .default) { (alert : UIAlertAction!) in
camera.getCameraOn(self, canEdit: true)
}
let sharePhoto = UIAlertAction(title: "Photo Library", style: .default) { (alert : UIAlertAction!) in
camera.getPhotoLibraryOn(self, canEdit: true)
}
let cancelAction = UIAlertAction(title: "Cancel", style: .cancel) { (alert : UIAlertAction!) in
}
optionMenu.addAction(takePhoto)
optionMenu.addAction(sharePhoto)
optionMenu.addAction(cancelAction)
self.present(optionMenu, animated: true, completion: nil)
}
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
let image = info[UIImagePickerControllerEditedImage] as! UIImage
// image is our desired image
picker.dismiss(animated: true, completion: nil)
}
}
相關問題
- 1. 來自相機或照片庫的圖像附件MFmessage/MailcomposeViewController
- 2. 如何在推文中添加照片庫(或照相機)的圖像?
- 3. 從照片庫中加載圖像
- 4. 如何將照片庫或照相機中的圖像添加到我的Ipad應用程序中?
- 5. 從相機/照片庫上載離子應用程序圖像
- 6. 如何將照相機捕獲的照片保存在圖片庫中
- 7. 從圖庫中加載ImageView上的圖像(圖片來自我的Google相冊)
- 8. Android ListView與來自相機或圖庫的自定義圖像
- 9. 拍攝來自相機的照片
- 10. Swift 3 - 在自定義相機視圖上捕獲照片
- 11. 如何在swift中刷新照片庫?
- 12. 設置ImageView與來自相機或圖庫的選定圖像
- 13. 當我從圖庫中選擇照片或從相機拍攝照片時,我的照片正在旋轉?
- 14. 如何從iPhone設備照片庫中的相機中保存拍攝圖像?
- 15. 如何在照片庫Swift中保存圖片?
- 16. Android選擇圖片或照相機
- 17. 如何從照片庫懶惰地加載圖像?
- 18. 如何從iOS照片庫加載圖像到UIWebView?
- 19. swift中相機和照片庫的隱私問題
- 20. 要求用戶從照片庫或照相機中選擇照片swift2
- 21. 如何從相機拍照並在android應用程序中添加照片庫?
- 22. iOS:確定相冊中的照片是否來自相機
- 23. 將圖片庫或相機中的圖片上傳到Firebase存儲(Swift)
- 24. 如何在iPhone照片庫中保存圖像只有自定義相冊?
- 25. IOS:在UIImageView中插入一張來自相機的照片
- 26. 如何將照片庫加載到UICollectionView? Swift
- 27. 如何在Android中從圖庫或相機中選擇圖像?
- 28. 如何路徑在C#中來自圖片庫的圖像
- 29. 如何獲取相機膠捲中的照片路徑或剛拍攝的照片(iOS/Swift)?
- 30. Android - 如何從相機捕獲圖像或從庫中添加
我已爲你找出答案,但你得到的所有downvotes,因爲這是沒有網站「代碼爲你」。您必須提供代碼,我們正在幫助您找到錯誤並改善您的代碼。所以下次嘗試谷歌解決方案,並獲得幫助,如果你卡住了。現在:我已經爲你發佈了一個功能齊全的選項。玩得開心 –
我明白,這不是一個讓人爲我做這項工作的地方,我只是要求我可以從哪裏開始。我不希望任何人爲我寫出來,儘管我很欣賞你發佈的答案。 –
我不想冒犯你或任何配偶。只是想告訴你,爲什麼你會得到所有的投票。你得到我的贊成,所以它不會太壞,如果我的工作可以幫助你,我很高興你的問題得到解答,所以你可以檢查它。如果您需要進一步的幫助,請告訴我。 –