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, но я могу получить желаемый эффект. Как я могу узнать размер или координату элемента изображения или есть простой способ реализовать это?
Спасибо.