es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Vista rápida solo muestra una primera página borrosa de los documentos en MacOS.

Tengo una aplicación de SwiftUI para iOS que he hecho disponible para Mac Catalyst. Estoy usando QuickLook Preview para mostrar pdf, docx, imágenes y pptx en la aplicación. La representación funciona bien en iOS pero en MacOS, solo se muestra una página del documento con una apariencia borrosa.

Aquí está mi código que implementa el QuickLook:

import SwiftUI
import QuickLook

struct PreviewController: UIViewControllerRepresentable {

@Binding var url: URL

func makeUIViewController(context: Context) -> QLPreviewController {
    let controller = QLPreviewController()
    controller.dataSource = context.coordinator
    return controller
}

func updateUIViewController(
    _ uiViewController: QLPreviewController, context: Context) {}


func makeCoordinator() -> Coordinator {
    return Coordinator(parent: self)
}

class Coordinator: QLPreviewControllerDataSource {

    let parent: PreviewController

    init(parent: PreviewController) {
        self.parent = parent
    }

    func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
        return 1
    }

    func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
        return parent.url as NSURL
    }

}
}

y luego lo llamo en mi vista de contenido en una hoja. La pregunta es ¿qué hago de manera diferente para renderizar los documentos correctamente en MacOS?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Como experto en informática especializado en Swift, SwiftUI, Docx, Mac Catalyst y Quick Look, hay algunos pasos que puedes seguir para asegurarte de que tus documentos se representen correctamente en MacOS cuando se utiliza Quick Look Preview.

    En primer lugar, intenta cambiar el método updateUIViewController en PreviewController para incluir una llamada a reloadData():

    func updateUIViewController(
            _ uiViewController: QLPreviewController, context: Context) {
        uiViewController.reloadData()
    }
    

    Esto asegurará que la vista previa se recargue cada vez que se actualice la vista, lo cual puede ayudar a solucionar el problema de la apariencia borrosa.

    En segundo lugar, es posible que necesites ajustar el preferredContentSize del QLPreviewController para asegurarte de que se muestre todo el documento en la pantalla. Puedes hacerlo estableciendo el preferredContentSize del controlador de vista previa en el método makeUIViewController:

    func makeUIViewController(context: Context) -> QLPreviewController {
        let controller = QLPreviewController()
        controller.dataSource = context.coordinator
        controller.preferredContentSize = CGSize(width: 0, height: 500) // ajustar según sea necesario
        return controller
    }
    

    Finalmente, asegúrate de estar utilizando la última versión de Swift y SwiftUI, así como la última versión de MacOS. Las versiones antiguas del framework pueden no ser compatibles con Mac Catalyst, lo que podría provocar problemas de visualización como el que estás experimentando.

    Siguiendo estos pasos, deberías poder representar tus documentos correctamente en MacOS utilizando Quick Look Preview. ¡Buena suerte!

Comments are closed.