example app ios objective-c swift uiwebview

app - wkwebview ios



UIWebview eliminar relleno/margen (4)

Establecer el marco de vista de desplazamiento en el marco de la vista web no tendrá ningún efecto mientras la vista web esté en el origen y un efecto no deseado de lo contrario.

Ajuste el contenido de la vista de desplazamientoInset:

// set t,l,b,r to be negative CGFloat values that suit your content webView.scrollView.contentInset = UIEdgeInsetsMake(t,l,b,r);

Estoy cargando un PDF en una UIWebview y cambié el color de fondo para borrar y establecer opaco a falso. Sin embargo, ahora hay un relleno o margen en mi UIWebView que me gustaría eliminar para que UIWebview sea ​​la pantalla.

UIWebview una UIWebview así:

let webview = UIWebView() webview.frame = self.view.bounds webview.scrollView.frame = webview.frame webview.userInteractionEnabled = true webview.scalesPageToFit = true webview.becomeFirstResponder() webview.delegate = self webview.scrollView.delegate = self webview.opaque = false webview.backgroundColor = UIColor.clearColor() self.view.addSubview(webview) webview.loadRequest(NSURLRequest(URL:url)) webview.gestureRecognizers = [pinchRecognizer, panRecognizer]

y apliqué esto al método webViewDidFinishLoad

func webViewDidFinishLoad(webView: UIWebView) { let padding = "document.body.style.margin=''0'';document.body.style.padding = ''0''" webView.stringByEvaluatingJavaScriptFromString(padding) }

pero todavía hay un relleno o margen, se ve así:

¿Cómo puedo solucionar esto?

La razón por la que necesito que esto esté arreglado es porque voy a guardar este UIWebView como un PDF y cuando lo guardo, ese espaciado adicional también existe, aquí está mi código de generación de PDF:

func drawPDFUsingPrintPageRenderer(printPageRenderer: UIPrintPageRenderer) -> NSData! { let data = NSMutableData() UIGraphicsBeginPDFContextToData(data, CGRectZero, nil) UIGraphicsBeginPDFPage() printPageRenderer.drawPageAtIndex(0, inRect: UIGraphicsGetPDFContextBounds()) UIGraphicsEndPDFContext() return data }

y más

let screenHeight = appDelegate.webview!.scrollView.bounds.size.height let heightStr = appDelegate.webview!.scrollView.bounds.size.height let height = heightStr let pages = ceil(height / screenHeight) let pdfMutableData = NSMutableData() UIGraphicsBeginPDFContextToData(pdfMutableData, appDelegate.webview!.scrollView.bounds, nil) for i in 0..<Int(pages) { if (CGFloat((i+1)) * screenHeight > CGFloat(height)) { var f = appDelegate.webview!.scrollView.frame f.size.height -= ((CGFloat((i+1)) * screenHeight) - CGFloat(height)); appDelegate.webview!.scrollView.frame = f } UIGraphicsBeginPDFPage() let currentContext = UIGraphicsGetCurrentContext() appDelegate.webview!.scrollView.setContentOffset(CGPointMake(0, screenHeight * CGFloat(i)), animated: false) appDelegate.webview!.scrollView.layer.renderInContext(currentContext!) } UIGraphicsEndPDFContext()


Este ejemplo proporciona un espacio superior de 64 para permitir una barra de navegación.

let webView: UIWebView = UIWebView() webView.frame = self.view.bounds webView.scrollView.frame = webView.frame webView.scrollView.contentInset = UIEdgeInsetsMake(64,0,0,0)


Esto parece solucionar mi problema, no estoy seguro de qué tan bien funcione con otros documentos PDF (Portrait) mine es Landscape y funciona bien.

appDelegate.webview = UIWebView() appDelegate.webview!.frame = CGRect(x: 0 - 8, y: 0 - 8, width: self.view.bounds.size.width + 14, height: self.view.bounds.size.height + 14) appDelegate.webview!.scrollView.frame = CGRect(x: 0 - 8, y: 0 - 8, width: self.view.bounds.size.width + 14, height: self.view.bounds.size.height + 14)

y luego para guardar el PDF

func createPdfFromView(aView: UIView, saveToDocumentsWithFileName fileName: String) { let pdfData = NSMutableData() UIGraphicsBeginPDFContextToData(pdfData, CGRect(x: 0 + 8, y: 0 - 8, width: aView.bounds.size.width - 17, height: aView.bounds.size.height - 117), nil) UIGraphicsBeginPDFPage() guard let pdfContext = UIGraphicsGetCurrentContext() else { return } aView.layer.renderInContext(pdfContext) UIGraphicsEndPDFContext() if let documentDirectories = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).first { let documentsFileName = documentDirectories + "/" + fileName debugPrint(documentsFileName) pdfData.writeToFile(documentsFileName, atomically: true) } }

Por favor, avíseme si estoy haciendo algo mal


No estoy seguro de haber encontrado la respuesta pero, como un trabajo rápido, puede dar una restricción preajustada.

digamos si su espacio de relleno es 10px desde los 4 lados y si siempre es una constante

el trabajo alrededor es:

Otorgue -10 espacio para la vista web a su alrededor, también haga que no se olvide de agregar una supervista a su vista web sin las restricciones laterales de -10px y marque la supervista

clipsToBounds = true clipSubViews = true