SwiftUI делает переход с приложением для просмотра изображений на основе документов, как?

Я просто следую некоторому примеру, чтобы создать свое первое приложение на основе документов. UTType - это изображение. Код ниже, он работает правильно, но при выборе элемента изображения нет перехода.

      import SwiftUI
import UniformTypeIdentifiers

@main
struct hhhApp: App {
    //@State var tag:
   
    var body: some Scene {
        DocumentGroup(viewing: MyImageFormatDocument.self) {file in
                MyImageFormatViewer(document: file.$document)
                //.transition(.scale.animation(.easeInOut(duration: 2)))
                .onAppear{print("appear")}
        }   
    }
}

struct MyImageFormatViewer:View{
    //@State private var image: UIImage = document.image
    @State private var showDetail = false

    @Binding var document:MyImageFormatDocument
    var body: some View{
            Image(uiImage: document.image)  
    }
}


struct MyImageFormatDocument: FileDocument {
    static var readableContentTypes = [UTType.image]
    var image = UIImage()
    // create from a file
    init(configuration: ReadConfiguration) throws {
        guard let data = configuration.file.regularFileContents,
              let decodedImage: UIImage = UIImage(data: data)
          else {
            throw CocoaError(.fileReadCorruptFile)
        }
        image = decodedImage
    }

    // write
    func fileWrapper(configuration: WriteConfiguration) throws -> FileWrapper {
        let data = image.pngData()!
        //return .init(regularFileWithContents: data)
        return FileWrapper(regularFileWithContents: data)
    }
    
    
    init(initialImage: UIImage = UIImage()) {
        image = initialImage
    }
  
    init(fileWrapper: FileWrapper, contentType: UTType) throws {
        if let data = fileWrapper.regularFileContents {
            image = UIImage(data: data) ?? UIImage()
            print("init")
        }
    }
 
    func write(to fileWrapper: inout FileWrapper, contentType: UTType) throws { }
}

Я хочу реализовать анимацию так же, как «файловое» приложение системы. Когда вы выбираете изображение, оно будет масштабировать переход от элемента изображения в файловом браузере к предварительному просмотру изображения.

Я пытаюсь добавить анимацию или переход для MyImageFormatViewer, но я могу получить желаемый эффект. Как я могу узнать размер или координату элемента изображения или есть простой способ реализовать это?

Спасибо.

0 ответов

Другие вопросы по тегам