Skip to content

Commit 34ae97c

Browse files
committed
Добавил вьюху для выбора одной фотографии
И поднял версию CachedAsyncImage991, чтобы поправить баг с лишней анимацией у картинок
1 parent 185fa4c commit 34ae97c

File tree

3 files changed

+50
-3
lines changed

3 files changed

+50
-3
lines changed

Package.resolved

+2-2
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
"kind" : "remoteSourceControl",
66
"location" : "https://github.com/OlegEremenko991/CachedAsyncImage991",
77
"state" : {
8-
"revision" : "e308c3519417eba297c26b1d7c41eae20ccbf0e1",
9-
"version" : "1.1.0"
8+
"revision" : "7c625daaadea6c56f2c739af70374c0b7ca41112",
9+
"version" : "1.2.0"
1010
}
1111
}
1212
],

Package.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ let package = Package(
1010
.library(name: "SWDesignSystem", targets: ["SWDesignSystem"])
1111
],
1212
dependencies: [
13-
.package(url: "https://github.com/OlegEremenko991/CachedAsyncImage991", from: "1.1.0")
13+
.package(url: "https://github.com/OlegEremenko991/CachedAsyncImage991", from: "1.2.0")
1414
],
1515
targets: [
1616
.target(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
import SwiftUI
2+
3+
/// Пикер для одной фотографии с возможностью обрезки
4+
public struct SWImagePicker: UIViewControllerRepresentable {
5+
let completion: (UIImage) -> Void
6+
@Environment(\.dismiss) private var dismiss
7+
8+
/// Инициализатор
9+
/// - Parameter completion: Возвращает выбранную фотографию
10+
public init(completion: @escaping (UIImage) -> Void) {
11+
self.completion = completion
12+
}
13+
14+
public func makeUIViewController(context: Context) -> UIImagePickerController {
15+
let picker = UIImagePickerController()
16+
picker.sourceType = .photoLibrary
17+
picker.allowsEditing = true
18+
picker.delegate = context.coordinator
19+
return picker
20+
}
21+
22+
public func updateUIViewController(_: UIImagePickerController, context _: Context) {}
23+
24+
public func makeCoordinator() -> Coordinator { .init(self) }
25+
26+
public final class Coordinator: NSObject, UINavigationControllerDelegate, UIImagePickerControllerDelegate {
27+
private let parent: SWImagePicker
28+
29+
init(_ parent: SWImagePicker) {
30+
self.parent = parent
31+
}
32+
33+
public func imagePickerController(
34+
_: UIImagePickerController,
35+
didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey: Any]
36+
) {
37+
if let image = info[.editedImage] as? UIImage ?? info[.originalImage] as? UIImage {
38+
parent.completion(image)
39+
}
40+
parent.dismiss()
41+
}
42+
43+
public func imagePickerControllerDidCancel(_: UIImagePickerController) {
44+
parent.dismiss()
45+
}
46+
}
47+
}

0 commit comments

Comments
 (0)