Salut, existe-t-il un exemple SwiftUI d'utilisation de TOCropViewController ? Je viens de commencer à apprendre SwiftUI et je n'ai aucune expérience antérieure avec UIViewcontroller, cela m'aiderait donc à démarrer.
Salut @ClaesClaes ! Oh wow! Bienvenue dans la communauté Swift alors !
Quelques personnes l'ont déjà demandé. Apple a publié quelques tutoriels qui, espérons-le, vont dans la bonne direction : https://developer.apple.com/tutorials/swiftui/interfacing-with-uikit
Malheureusement, je ne connais pas grand-chose à SwiftUI (je reste avec UIKit un peu plus longtemps. :) ), donc je ne peux malheureusement pas consacrer le temps à apprendre puis à écrire un exemple d'application pour le moment.
Je laisserai ce problème ouvert avec un statut « RP demandé » ci-joint. Si quelqu'un d'autre souhaite créer un échantillon SwiftUI et publier un PR pour celui-ci, ce serait très apprécié. :)
J'espère que ça aide !
Salut Tim,
Merci pour votre réponse. J'ai réussi à intégrer le TOCropViewController dans mon projet SwiftUI, donc il a (principalement) l'air bien pour le moment. Je peux poster du code + des instructions quand le temps le permet.
À votre santé,
Claes
Le 20 juillet 2020 à 14h37, Tim Oliver [email protected] a écrit :
Salut @ClaesClaes https://github.com/ClaesClaes ! Oh wow! Bienvenue dans la communauté Swift alors !
Quelques personnes l'ont déjà demandé. Apple a publié quelques tutoriels qui, espérons-le, vont dans la bonne direction : https://developer.apple.com/tutorials/swiftui/interfacing-with-uikit https://developer.apple.com/tutorials/swiftui/interfacing-with- uikit
Malheureusement, je ne connais pas grand-chose à SwiftUI (je reste avec UIKit un peu plus longtemps. :) ), donc je ne peux malheureusement pas consacrer le temps à apprendre puis à écrire un exemple d'application pour le moment.Je laisserai ce problème ouvert avec un statut « RP demandé » ci-joint. Si quelqu'un d'autre souhaite créer un échantillon SwiftUI et publier un PR pour celui-ci, ce serait très apprécié. :)
-
Vous recevez ceci parce que vous avez été mentionné.
Répondez à cet e-mail directement, consultez-le sur GitHub https://github.com/TimOliver/TOCropViewController/issues/421#issuecomment-660858630 , ou désabonnez-vous https://github.com/notifications/unsubscribe-auth/ACOX6SWCSSAJWXCJ7KUWH2LR4PX2NWANCNFSM4
Salut @ClaesClaes !
J'ai créé un exemple d'application pour utiliser le « TOCropViewController » avec SwiftUI.
Avec l'utilisation de SwiftUI, je vois un problème où « TOCropViewController » ne peut pas être fermé à moins que vous n'attendiez 1 seconde lors de la transition de « UIImagePickerController » à « TOCropViewController ». Comment avez-vous résolu ce problème ?
Salut Kenji,
Je n'ai pas vu un tel retard dans ma mise en œuvre. Je ne suis pas en mesure de tester cela cette semaine, mais je peux le regarder plus tard.
Claes
Envoyé depuis mon téléphone. Toutes nos excuses pour la brièveté et les fautes d'orthographe
Le 25 juillet 2020, à 22h12, Kenji Wada [email protected] a écrit :
Salut @ClaesClaes !
J'ai créé un exemple d'application pour utiliser le « TOCropViewController » avec SwiftUI.https://github.com/CH3COOH/TOCropViewController/tree/issue/421
Avec l'utilisation de SwiftUI, je vois un problème où « TOCropViewController » ne peut pas être fermé à moins que vous n'attendiez 1 seconde lors de la transition de « UIImagePickerController » à « TOCropViewController ». Comment avez-vous résolu ce problème ?Xcode 11.6 / iOS 13.6
-
Vous recevez ceci parce que vous avez été mentionné.
Répondez directement à cet e-mail, consultez-le sur GitHub ou désabonnez-vous.
Salut,
J'ai "interfacé" TOCropViewController pour SwiftUI. Je viens de commencer mon aventure de développement iOS, donc ce code n'est probablement pas parfait mais il fonctionne toujours et peut aider certaines personnes à démarrer avec ce référentiel et SwiftUI.
// 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
}
}
Usage:
// 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)
}
}
}
Salut,
J'ai "interfacé" TOCropViewController pour SwiftUI. Je viens de commencer mon aventure de développement iOS, donc ce code n'est probablement pas parfait mais il fonctionne toujours et peut aider certaines personnes à démarrer avec ce référentiel et SwiftUI.// 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 } }
Usage:
// 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 cropViewController(_ cropViewController : CropViewController, didCropToImage image : UIImage, withRect cropRect : CGRect, angle : Int) {
parent.fait(image)
// 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
}
}
}
Commentaire le plus utile
Salut,
J'ai "interfacé" TOCropViewController pour SwiftUI. Je viens de commencer mon aventure de développement iOS, donc ce code n'est probablement pas parfait mais il fonctionne toujours et peut aider certaines personnes à démarrer avec ce référentiel et SwiftUI.
Usage: