将Uikit ImagePicker转换为Swiftui
我发现很难转换它,以便在Swiftui视图中起作用。我尝试了自己的变体,但是功能“ getVideofromcamerarololl”具有“ on” on oon on on'on's oon'''''''''''on on oon'ons oon oon'''''''swiftui视图中的'''''''''''''on on oon on on on ons on on on on on on on on on ons of swiftui视图不起作用,因为它是uiviewController而不是contentView。感谢我能获得的所有帮助,我对此相对较新:(
此图像选择器可以拍摄视频并为该视频生成缩略图。
class PhotoServices: NSObject {
static let shared = PhotoServices()
internal var completion: ((URL)->Void)!
internal let picker = UIImagePickerController()
override init() {
super.init()
self.picker.allowsEditing = false
self.picker.modalPresentationStyle = .fullScreen
self.picker.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)!
self.picker.delegate = self
}
func getVideoFromCameraRoll(on: UIViewController, completion: @escaping (_ image: URL)->()) {
self.picker.sourceType = .photoLibrary
self.picker.mediaTypes = [kUTTypeMovie as String]
DispatchQueue.main.async {
on.present(self.picker, animated: true) {
self.completion = completion
}
}
}
}
//// MARK: UIImagePickerControllerDelegate methods
extension PhotoServices: UIImagePickerControllerDelegate,
UINavigationControllerDelegate {
func imagePickerController(_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [String : Any]) {
if let url = info[UIImagePickerControllerMediaURL] as? URL {
DispatchQueue.main.async {
self.picker.dismiss(animated: true) {
self.completion(url)
}
}
}
}
}
////// MARK: Thumbnail
extension PhotoServices {
func getThumbnailFrom(path: URL) -> UIImage? {
do {
let asset = AVURLAsset(url: path , options: nil)
let imgGenerator = AVAssetImageGenerator(asset: asset)
imgGenerator.appliesPreferredTrackTransform = true
let cgImage = try imgGenerator.copyCGImage(at: CMTimeMake(0, 1), actualTime:
nil)
let thumbnail = UIImage(cgImage: cgImage)
return thumbnail
} catch let error {
print("*** Error generating thumbnail: \(error.localizedDescription)")
return nil
}
}
}
I'm finding it tough to convert this so that it works in a swiftUI view. I have tried my own variations but the function 'getVideofromCameraRoll' which has an 'on' parameter doesn't work in a SwiftUI view as it's a UIViewController and not ContentView. Appreciate all the help I can get, I'm relatively new to this :(
This image picker takes in video and generates a thumbnail for that video.
class PhotoServices: NSObject {
static let shared = PhotoServices()
internal var completion: ((URL)->Void)!
internal let picker = UIImagePickerController()
override init() {
super.init()
self.picker.allowsEditing = false
self.picker.modalPresentationStyle = .fullScreen
self.picker.mediaTypes = UIImagePickerController.availableMediaTypes(for: .photoLibrary)!
self.picker.delegate = self
}
func getVideoFromCameraRoll(on: UIViewController, completion: @escaping (_ image: URL)->()) {
self.picker.sourceType = .photoLibrary
self.picker.mediaTypes = [kUTTypeMovie as String]
DispatchQueue.main.async {
on.present(self.picker, animated: true) {
self.completion = completion
}
}
}
}
//// MARK: UIImagePickerControllerDelegate methods
extension PhotoServices: UIImagePickerControllerDelegate,
UINavigationControllerDelegate {
func imagePickerController(_ picker: UIImagePickerController,
didFinishPickingMediaWithInfo info: [String : Any]) {
if let url = info[UIImagePickerControllerMediaURL] as? URL {
DispatchQueue.main.async {
self.picker.dismiss(animated: true) {
self.completion(url)
}
}
}
}
}
////// MARK: Thumbnail
extension PhotoServices {
func getThumbnailFrom(path: URL) -> UIImage? {
do {
let asset = AVURLAsset(url: path , options: nil)
let imgGenerator = AVAssetImageGenerator(asset: asset)
imgGenerator.appliesPreferredTrackTransform = true
let cgImage = try imgGenerator.copyCGImage(at: CMTimeMake(0, 1), actualTime:
nil)
let thumbnail = UIImage(cgImage: cgImage)
return thumbnail
} catch let error {
print("*** Error generating thumbnail: \(error.localizedDescription)")
return nil
}
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论