İçeriğe geç

SwiftUI ile UIDocumentInteractionController kullanımı

Merhabalar bu yazımda SwiftUI ile birlikte UIDocumentInteractionController sınıfını nasıl kullanabileceğinizi göstereceğim.

UIDocumentInteractionController sınıfı ile birlikte pdf, gif, video, png vs görsellerin önizleme yaparak paylaşma işlemini arayüz olarak sunmakta. UIKit içerisinde bulunan bu yardımcı sınıfı kolay bir şekilde SwiftUI ile birlikte kullanabilirsiniz.

Aşağıda yazdığım örneği inceleyebilirsiniz.

struct ContentView: View {
    
    @ObservedObject var previewInteraction = PreviewInteraction()
    
    var body: some View {
        Button(action: {
            previewInteraction.download(link: "https://i.pinimg.com/originals/1b/06/9c/1b069c08879c4323b3a7362155124fad.gif")
        }, label: {
            Text("Preview Gif")
        })
    }
}
class PreviewInteraction: NSObject, ObservableObject, UIDocumentInteractionControllerDelegate {
    
    private func show(url: URL) {
        let controller = UIDocumentInteractionController(url: url)
        controller.delegate = self
        controller.presentPreview(animated: true)
    }
    
    func download(link: String) {
        guard let itemUrl = URL(string: link) else { return }
        URLSession.shared.dataTask(with: itemUrl) { data, response, error in
            guard let data = data, error == nil else { return }
            guard let fileName = response?.suggestedFilename else { return }
            
            let tmpURL = FileManager.default.temporaryDirectory
                .appendingPathComponent(fileName)
            
            do {
                try data.write(to: tmpURL)
            } catch {
                print(error)
            }
            
            DispatchQueue.main.async { self.show(url: tmpURL) }
        }.resume()
    }
    
    func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController {
        return UIApplication.shared.windows.first!.rootViewController!
    }
}

 

 

Tarih:SwiftUI

İlk Yorumu Siz Yapın

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Copyright © 2021 Kenan Atmaca