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