рдирдорд╕реНрддреЗ, рдХреНрдпрд╛ TOCropViewController рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдЙрджрд╛рд╣рд░рдг рд╣реИ? рдореИрдВрдиреЗ рдЕрднреА рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рд╕реАрдЦрдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ UIViewcontroller рдХрд╛ рдХреЛрдИ рдкрд┐рдЫрд▓рд╛ рдЕрдиреБрднрд╡ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЬрд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред
рд╣рд╛рдп @ClaesClaes! рдЕрд░реЗ рд╡рд╛рд╣! рддрдм рд╕реНрд╡рд┐рдлреНрдЯ рд╕рдореБрджрд╛рдп рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!
рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рдкрд╣рд▓реЗ рдпрд╣ рдкреВрдЫрд╛ рд╣реИред рдРрдкреНрдкрд▓ рдиреЗ рдХреБрдЫ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЬрд╛рд░реА рдХрд┐рдП рд╣реИрдВ рдЬреЛ рдЙрдореНрдореАрдж рд╕реЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ: https://developer.apple.com/tutorials/swiftui/interfacing-with-uikit
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ (рдореИрдВ рдЕрднреА рднреА рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдпреВрдЖрдИрдХрд┐рдЯ рдХреЗ рд╕рд╛рде рдЪрд┐рдкрдХрд╛ рд╣реБрдЖ рд╣реВрдВред :)), рдЗрд╕рд▓рд┐рдП рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕рдордп рд╕реАрдЦрдиреЗ рдФрд░ рдлрд┐рд░ рдПрдХ рдирдореВрдирд╛ рдРрдк рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ред
рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ "рдкреАрдЖрд░ рдЕрдиреБрд░реЛрдзрд┐рдд" рд╕реНрдерд┐рддрд┐ рд╕рдВрд▓рдЧреНрди рдХрд░рдХреЗ рдЦреБрд▓рд╛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред рдЕрдЧрд░ рдХреЛрдИ рдФрд░ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдирдореВрдирд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред :)
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдорджрдж рдХрд░реЗрдВрдЧреЗ!
рд╣рд╛рдп рдЯрд┐рдо,
рдЖрдкрдХреЗ рдЬрд╡рд╛рдм рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ TOCropViewController рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдмреА рд╣рд╛рд╕рд┐рд▓ рдХреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ (рдЬреНрдпрд╛рджрд╛рддрд░) рдЕрднреА рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИред рд╕рдордп рдорд┐рд▓рдиреЗ рдкрд░ рдореИрдВ рдХреБрдЫ рдХреЛрдб + рдирд┐рд░реНрджреЗрд╢ рдкреЛрд╕реНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред
рдЪреАрдпрд░реНрд╕,
рдХреНрд▓реЗрд╕
20 рдЬреБрд▓рд╛рдИ, 2020 рдХреЛ рджреЛрдкрд╣рд░ 2:37 рдмрдЬреЗ, рдЯрд┐рдо рдУрд▓рд┐рд╡рд░ рдиреЗ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рд▓рд┐рдЦрд╛:
рд╣рд╛рдп @ClaesClaes https://github.com/ClaesClaes ! рдЕрд░реЗ рд╡рд╛рд╣! рддрдм рд╕реНрд╡рд┐рдлреНрдЯ рд╕рдореБрджрд╛рдп рдореЗрдВ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ!
рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдиреЗ рдкрд╣рд▓реЗ рдпрд╣ рдкреВрдЫрд╛ рд╣реИред рдРрдкреНрдкрд▓ рдиреЗ рдХреБрдЫ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдЬрд╛рд░реА рдХрд┐рдП рд╣реИрдВ рдЬреЛ рдЙрдореНрдореАрдж рд╕реЗ рд╕рд╣реА рджрд┐рд╢рд╛ рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рддреЗ рд╣реИрдВ: https://developer.apple.com/tutorials/swiftui/interfacing-with-uikit https://developer.apple.com/tutorials/swiftui/interfacing-with- uikit
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореБрдЭреЗ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ (рдореИрдВ рдЕрднреА рднреА рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓рд┐рдП рдпреВрдЖрдИрдХрд┐рдЯ рдХреЗ рд╕рд╛рде рдЪрд┐рдкрдХрд╛ рд╣реБрдЖ рд╣реВрдВред :)), рдЗрд╕рд▓рд┐рдП рджреБрдЦ рдХреА рдмрд╛рдд рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рд╕рдордп рд╕реАрдЦрдиреЗ рдФрд░ рдлрд┐рд░ рдПрдХ рдирдореВрдирд╛ рдРрдк рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛редрдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ "рдкреАрдЖрд░ рдЕрдиреБрд░реЛрдзрд┐рдд" рд╕реНрдерд┐рддрд┐ рд╕рдВрд▓рдЧреНрди рдХрд░рдХреЗ рдЦреБрд▓рд╛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛ред рдЕрдЧрд░ рдХреЛрдИ рдФрд░ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдирдореВрдирд╛ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рдкреАрдЖрд░ рдкреЛрд╕реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХреА рдмрд╣реБрдд рд╕рд░рд╛рд╣рдирд╛ рдХреА рдЬрд╛рдПрдЧреАред :)
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub https://github.com/TimOliver/TOCropViewController/issues/421#issuecomment-660858630 рдкрд░ https://github.com/notifications/unsubscribe-auth/ACOX6SWCSSAJWXCJ7KUWH2LR4PX2NANCNFSM4OZHUWVQ рдХреЛ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм
рд╣рд╛рдп, @ClaesClaes !
рдореИрдВрдиреЗ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреЗ рд╕рд╛рде 'TOCropViewController' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдореВрдирд╛ рдРрдк рдмрдирд╛рдпрд╛ рд╣реИред
рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ рдЬрд╣рд╛рдВ 'TOCropViewController' рдХреЛ рддрдм рддрдХ рдмрдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдЬрдм рддрдХ рдХрд┐ рдЖрдк 'UIImagePickerController' рд╕реЗ 'TOCropViewController' рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХрд░рддреЗ рд╕рдордп 1 рд╕реЗрдХрдВрдб рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рди рдХрд░реЗрдВред рдЖрдкрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рд╣реИ?
рд╣рд╛рдп рдХреЗрдВрдЬреА,
рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдЗрддрдиреА рджреЗрд░реА рдирд╣реАрдВ рджреЗрдЦреА рд╣реИред рдореИрдВ рдЗрд╕ рд╕рдкреНрддрд╛рд╣ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд░ рдкрд╛ рд░рд╣рд╛ рд╣реВрдВ рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВред
рдХреНрд▓реЗрд╕
рдореЗрд░реЗ рдлреЛрди рд╕реЗ рднреЗрдЬрд╛ рдЧрдпрд╛ред рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдФрд░ рд╡рд░реНрддрдиреА рдХреА рдЧрд▓рддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдпрд╛рдЪрдирд╛
25 рдЬреБрд▓рд╛рдИ 2020 рдХреЛ 22:12 рдмрдЬреЗ рдХреЗрдВрдЬреА рд╡рд╛рдбрд╛ рдиреЛрдЯрд┐рдлрд┐рдХреЗрд╢рди @github.com рдиреЗ рд▓рд┐рдЦрд╛:
рд╣рд╛рдп, @ClaesClaes !
рдореИрдВрдиреЗ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреЗ рд╕рд╛рде 'TOCropViewController' рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдореВрдирд╛ рдРрдк рдмрдирд╛рдпрд╛ рд╣реИредhttps://github.com/CH3COOH/TOCropViewController/tree/issue/421
рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде, рдореБрдЭреЗ рдПрдХ рд╕рдорд╕реНрдпрд╛ рджрд┐рдЦрд╛рдИ рджреЗ рд░рд╣реА рд╣реИ рдЬрд╣рд╛рдВ 'TOCropViewController' рдХреЛ рддрдм рддрдХ рдмрдВрдж рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдЬрдм рддрдХ рдХрд┐ рдЖрдк 'UIImagePickerController' рд╕реЗ 'TOCropViewController' рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХрд░рддреЗ рд╕рдордп 1 рд╕реЗрдХрдВрдб рддрдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рди рдХрд░реЗрдВред рдЖрдкрдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рд╣реИ?рдПрдХреНрд╕рдХреЛрдб 11.6 / рдЖрдИрдУрдПрд╕ 13.6
-
рдЖрдк рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рдИрдореЗрд▓ рдХрд╛ рд╕реАрдзреЗ рдЙрддреНрддрд░ рджреЗрдВ, рдЗрд╕реЗ GitHub рдкрд░ рджреЗрдЦреЗрдВ, рдпрд╛ рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВред
рдирдорд╕реНрддреЗ,
рдореИрдВрдиреЗ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреЗ рд▓рд┐рдП "рдЗрдВрдЯрд░рдлрд╝реЗрд╕" TOCropViewControllerред рдореИрдВрдиреЗ рдЕрднреА рдЕрдкрдирд╛ iOS рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдПрдбрд╡реЗрдВрдЪрд░ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЛрдб рд╢рд╛рдпрдж рд╕рд╣реА рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕ рд░реЗрдкреЛ рдФрд░ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
// FIle: ImageCropper.swift
import SwiftUI
import UIKit
import CropViewController
struct ImageCropper: UIViewControllerRepresentable{
<strong i="7">@Binding</strong> var image: UIImage?
<strong i="8">@Binding</strong> var visible: Bool
var done: (UIImage) -> Void
class Coordinator: NSObject, CropViewControllerDelegate{
let parent: ImageCropper
init(_ parent: ImageCropper){
self.parent = parent
}
func cropViewController(_ cropViewController: CropViewController, didCropToImage image: UIImage, withRect cropRect: CGRect, angle: Int) {
withAnimation{
parent.visible = false
}
parent.done(image)
}
func cropViewController(_ cropViewController: CropViewController, didFinishCancelled cancelled: Bool) {
withAnimation{
parent.visible = false
}
}
}
func makeCoordinator() -> Coordinator {
return Coordinator(self)
}
func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) {}
func makeUIViewController(context: Context) -> some UIViewController {
let img = self.image ?? UIImage()
let cropViewController = CropViewController(image: img)
cropViewController.delegate = context.coordinator
return cropViewController
}
}
рдЙрдкрдпреЛрдЧ:
// FIle: SomeView.swift
import SwiftUI
struct SomeView: View {
<strong i="12">@State</strong> private var showImageCropper = false
<strong i="13">@State</strong> private var tempInputImage: UIImage?
func imageCropped(image: UIImage){
self.tempInputImage = nil
self.pictures[self.pickedImageIndex] = Image(uiImage: image)
}
var body: some View {
if showImageCropper {
ImageCropper(image: self.$tempInputImage, visible: self.$showImageCropper, done: self.imageCropped)
.zIndex(10)
}
}
}
рдирдорд╕реНрддреЗ,
рдореИрдВрдиреЗ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреЗ рд▓рд┐рдП "рдЗрдВрдЯрд░рдлрд╝реЗрд╕" TOCropViewControllerред рдореИрдВрдиреЗ рдЕрднреА рдЕрдкрдирд╛ iOS рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдПрдбрд╡реЗрдВрдЪрд░ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЛрдб рд╢рд╛рдпрдж рд╕рд╣реА рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕ рд░реЗрдкреЛ рдФрд░ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред// FIle: ImageCropper.swift import SwiftUI import UIKit import CropViewController struct ImageCropper: UIViewControllerRepresentable{ <strong i="8">@Binding</strong> var image: UIImage? <strong i="9">@Binding</strong> var visible: Bool var done: (UIImage) -> Void class Coordinator: NSObject, CropViewControllerDelegate{ let parent: ImageCropper init(_ parent: ImageCropper){ self.parent = parent } func cropViewController(_ cropViewController: CropViewController, didCropToImage image: UIImage, withRect cropRect: CGRect, angle: Int) { withAnimation{ parent.visible = false } parent.done(image) } func cropViewController(_ cropViewController: CropViewController, didFinishCancelled cancelled: Bool) { withAnimation{ parent.visible = false } } } func makeCoordinator() -> Coordinator { return Coordinator(self) } func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) {} func makeUIViewController(context: Context) -> some UIViewController { let img = self.image ?? UIImage() let cropViewController = CropViewController(image: img) cropViewController.delegate = context.coordinator return cropViewController } }
рдЙрдкрдпреЛрдЧ:
// FIle: SomeView.swift import SwiftUI struct SomeView: View { <strong i="13">@State</strong> private var showImageCropper = false <strong i="14">@State</strong> private var tempInputImage: UIImage? func imageCropped(image: UIImage){ self.tempInputImage = nil self.pictures[self.pickedImageIndex] = Image(uiImage: image) } var body: some View { if showImageCropper { ImageCropper(image: self.$tempInputImage, visible: self.$showImageCropper, done: self.imageCropped) .zIndex(10) } } }
func рдХреНрд░реЙрдк рд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓рд░ (_ рдХреНрд░реЙрдк рд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓рд░: рдХреНрд░реЙрдк рд╡реНрдпреВ рдХрдВрдЯреНрд░реЛрд▓рд░, рдбреАрдбрдХреНрд░реЙрдкрдЯреЛрдЗрдореЗрдЬ рдЗрдореЗрдЬ: рдпреВрдЖрдИрдПрдордореЗрдЬ, рд╡рд┐рдж рд░реЗрдХреНрдЯ рдХреНрд░реЙрдкрд░реЗрдХреНрдЯ: рд╕реАрдЬреАрдЖрд░рдИрдЯреА, рдПрдВрдЧрд▓: рдЗрдВрдЯ) {
рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХрд┐рдпрд╛ (рдЫрд╡рд┐)
// some how, there maybe a bug, it can not be dismissed except adding this
DispatchQueue.main.asyncAfter(deadline: .now() + 0.2) {
withAnimation{
self.parent.visible = false
}
}
}
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдирдорд╕реНрддреЗ,
рдореИрдВрдиреЗ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреЗ рд▓рд┐рдП "рдЗрдВрдЯрд░рдлрд╝реЗрд╕" TOCropViewControllerред рдореИрдВрдиреЗ рдЕрднреА рдЕрдкрдирд╛ iOS рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ рдПрдбрд╡реЗрдВрдЪрд░ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдХреЛрдб рд╢рд╛рдпрдж рд╕рд╣реА рдирд╣реАрдВ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрд╕ рд░реЗрдкреЛ рдФрд░ рд╕реНрд╡рд┐рдлреНрдЯрдпреВрдЖрдИ рдХреЗ рд╕рд╛рде рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рдЙрдкрдпреЛрдЧ: