Oi, há um exemplo de SwiftUI de usar TOCropViewController? Acabei de começar a aprender SwiftUI e não tenho nenhuma experiência anterior com UIViewcontroller, então me ajudaria a continuar.
Olá @ClaesClaes! Nossa! Bem-vindo à comunidade Swift então!
Algumas pessoas já perguntaram isso antes. A Apple lançou alguns tutoriais que, com sorte, apontam na direção certa: https://developer.apple.com/tutorials/swiftui/interfacing-with-uikit
Infelizmente, eu não sei muito sobre SwiftUI (ainda estou usando o UIKit por mais um pouco. :)), então, infelizmente, não posso dedicar meu tempo para aprender e escrever um aplicativo de amostra no momento.
Vou deixar este problema em aberto com o status "PR Solicitado" anexado. Se alguém mais quiser fazer uma amostra do SwiftUI e postar um PR, isso seria muito apreciado. :)
Espero que ajude!
Oi Tim,
Obrigado por sua resposta. Consegui integrar o TOCropViewController no meu projeto SwiftUI para que (principalmente) pareça bom por agora. Posso postar alguns códigos + instruções quando o tempo permitir.
Saúde,
Claes
Em 20 de julho de 2020, às 14h37, Tim Oliver [email protected] escreveu:
Olá @ClaesClaes https://github.com/ClaesClaes ! Nossa! Bem-vindo à comunidade Swift então!
Algumas pessoas já perguntaram isso antes. A Apple lançou alguns tutoriais que, com sorte, apontam na direção certa: https://developer.apple.com/tutorials/swiftui/interfacing-with-uikit https://developer.apple.com/tutorials/swiftui/interfacing-with- uikit
Infelizmente, eu não sei muito sobre SwiftUI (ainda estou usando o UIKit por mais um pouco. :)), então, infelizmente, não posso dedicar meu tempo para aprender e escrever um aplicativo de amostra no momento.Vou deixar este problema em aberto com o status "PR Solicitado" anexado. Se alguém mais quiser fazer uma amostra do SwiftUI e postar um PR, isso seria muito apreciado. :)
-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, veja-o no GitHub https://github.com/TimOliver/TOCropViewController/issues/421#issuecomment-660858630 ou cancele a inscrição https://github.com/notifications/unsubscribe-auth/ACOX6SWCSSAJWXCJ7KUWH4LANCNANCNANCNANCNANCNV2 .
Olá, @ClaesClaes !
Eu criei um aplicativo de amostra para usar o 'TOCropViewController' com o SwiftUI.
Com o uso do SwiftUI, estou vendo um problema em que 'TOCropViewController' não pode ser fechado a menos que você espere 1 segundo ao fazer a transição de 'UIImagePickerController' para 'TOCropViewController'. Como você corrigiu esse problema?
Oi Kenji,
Não vi tanto atraso na minha implementação. Não posso testar isso esta semana, mas posso ver mais tarde.
Claes
Enviado do meu telefone. Desculpas pela brevidade e erros ortográficos
Em 25 de julho de 2020, às 22:12, Kenji Wada [email protected] escreveu:
Olá, @ClaesClaes !
Eu criei um aplicativo de amostra para usar o 'TOCropViewController' com o SwiftUI.https://github.com/CH3COOH/TOCropViewController/tree/issue/421
Com o uso do SwiftUI, estou vendo um problema em que 'TOCropViewController' não pode ser fechado a menos que você espere 1 segundo ao fazer a transição de 'UIImagePickerController' para 'TOCropViewController'. Como você corrigiu esse problema?Xcode 11.6 / iOS 13.6
-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub ou cancele a inscrição.
Oi,
Eu "conectei" o TOCropViewController para SwiftUI. Acabei de começar minha aventura de desenvolvimento iOS, então este código provavelmente não é perfeito, mas ainda funciona e pode ajudar algumas pessoas a começar com este repo e 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
}
}
Uso:
// 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)
}
}
}
Oi,
Eu "conectei" o TOCropViewController para SwiftUI. Acabei de começar minha aventura de desenvolvimento iOS, então este código provavelmente não é perfeito, mas ainda funciona e pode ajudar algumas pessoas a começar com este repo e 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 } }
Uso:
// 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) } } }
função cropViewController (_ cropViewController: CropViewController, didCropToImage image: UIImage, withRect cropRect: CGRect, ângulo: Int) {
parent.done (imagem)
// 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
}
}
}
Comentários muito úteis
Oi,
Eu "conectei" o TOCropViewController para SwiftUI. Acabei de começar minha aventura de desenvolvimento iOS, então este código provavelmente não é perfeito, mas ainda funciona e pode ajudar algumas pessoas a começar com este repo e SwiftUI.
Uso: