Mostrar múltiples PPT en una UIWebView en iPhone

En mi aplicación actual, tengo una UITableView que muestra cientos de files PPT que se almacenan dentro de la aplicación. Cuando se hace clic en uno, una nueva vista con un UIWebView carga ese file PPT en el webView. Lo que me preguntaba es si me es posible usar un accesorioView para seleccionar varios files PPT, y luego cargar todos esos files PPT en una UIWebView, lo que les permite desplazarse desde la primera seleccionada a la segunda, y así sucesivamente.

Use múltiples UIWebViews

Cada PPT puede tener diferente ancho o relación de aspecto. Combinar todo el PPT en uno solo puede parecer una buena idea, pero puede no ser práctico.

Lo mismo puede decirse de la combinación de múltiples páginas web: puede encontrarse con globalidades conflictivas, como el color de background o peor, la encoding.

Al elegir adoptar una printing programática de continuidad, evitará todos estos problemas y más, y además podrá mostrar diferentes types de documentos: PDF, PPT, WEB, todo de forma continua.


Opción vertical

  1. En lugar de agregar una UIWebview a la vista de contenedor, agregue una UIScrollView . A su vez, posicione sus visiones web dentro del desplazador, con restricciones verticales encadenadas.
  2. Cargue cada contenido de UIWebView individual:

     aWebView.delegate = self if let url = NSBundle.mainBundle().URLForResource("Still", withExtension: "ppt") { awebView.loadRequest(NSURLRequest(URL: url)) } 
  3. Modifique el tamaño intrínseco de cada vista web para que ocupe todo el espacio disponible. Si haces esto en el delegado, básicamente dejas que el sistema operativo haga todos los cálculos por ti, y simplemente recopiles los valores después del hecho:

     func webViewDidFinishLoad(webView: UIWebView) { if let flow = webView as? FlowWebView { flow.w.constant = self.view.bounds.width flow.h.constant = webView.scrollView.contentSize.height } } 

Para simplificar, he creado un contenedor simple para que pueda acceder fácilmente a las restricciones intrínsecas, pero también podría rebuild fácilmente las restricciones sobre la marcha:

 class FlowWebView: UIWebView { @IBOutlet var h: NSLayoutConstraint! @IBOutlet var w: NSLayoutConstraint! } 

He probado el código anterior en iOS 9, Xcode 7, Swift. Las únicas adiciones que necesitarás son:

  • cambio de orientación
  • Ajustar páginas para ajustar

Opción horizontal

La opción horizontal es similar (usa una UIWebView por separado para cada contenido), solo se colocan horizontalmente en UIScrollView y pueden tener la claridad añadida de un controller de vista de página.

Requiere una altura fija (less cálculo) y un ancho pnetworkingecible (vistas nx). Pase verticalmente por cada PPT, y horizontalmente para pasar de una a otra.