Abilita zoom / pizzico su UIWebView


106

Ho un UIWebView con un file pdf. Funziona bene. Ma come posso abilitare lo zoom sul file pdf?

Risposte:



46

puoi usare a livello di webView.scalesPageToFit=YES;codice

Se stai usando in xib oltre a click the check box "Scaling" scales Page to fit


29

Questa logica per lo zoom di UIWebView, non è necessario aggiungere UIWebView su UIScrollView

L'unico problema webView.scalesPageToFit = YES;è che cambierà il contenuto iniziale della dimensione del carattere ma ho trovato un'altra opzione

Aggiungi <UIWebViewDelegate, UIScrollViewDelegate>al tuo file .h

Creazione del tuo UIWebView.

self.mWebview = [[UIWebView alloc] init];
self.mWebview.delegate = self; /// set delegate method of UIWebView
self.mWebview.frame = CGRectMake(0, 35, self.view.bounds.size.width, self.view.bounds.size.height - 80); // set frame whatever you want..
[self.mWebview setOpaque:NO];
self.mWebview.backgroundColor = [UIColor clearColor];
[self.view addSubview:self.mWebview];

Con caricamento file / contenuto HTML.

NSString* htmlString = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"File Name"ofType:@"html"] encoding:NSUTF8StringEncoding error:nil];
[self.mWebview loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];


#pragma mark -
#pragma mark - Webview Delegate Methods

- (void) webViewDidFinishLoad:(UIWebView *)webView
{
    webView.scrollView.delegate = self; // set delegate method of UISrollView
    webView.scrollView.maximumZoomScale = 20; // set as you want.
    webView.scrollView.minimumZoomScale = 1; // set as you want.

    //// Below two line is for iOS 6, If your app only supported iOS 7 then no need to write this.
    webView.scrollView.zoomScale = 2;
    webView.scrollView.zoomScale = 1;
}

#pragma mark -
#pragma mark - UIScrollView Delegate Methods

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale
{
    self.mWebview.scrollView.maximumZoomScale = 20; // set similar to previous.
}

NOTA: ho dovuto testare su Mac OS X - 10.9.3 con Xcode 5.1.1 e iOS versione 6.1 e successive.

Spero che questo ti sia d'aiuto. :)


1
Lo scrollViewDidEndZooming non era necessario per far funzionare correttamente lo zoom. Non sono sicuro di quale sia l'intento di quel codice in quanto sta solo reimpostando lo stesso valore che era stato impostato in precedenza con lo stesso identico valore!
Norman H

1
Sì, esattamente, perché è necessaria la parte scrollViewDidEndZooming? Ma a parte questo, risposta superba. Ha fatto zoomare anche quelle pagine che non venivano ingrandite semplicemente impostando la proprietà "Ridimensiona la pagina per adattarla".
GKK

25

So che questa domanda è piuttosto vecchia, ma per tutti coloro che utilizzano uno storyboard e preferiscono una risposta visiva eccola qui. Seleziona questa casella nell'ispettore degli attributi di WebView:

inserisci qui la descrizione dell'immagine


18

Se vuoi farlo in modo programmatico, usa

webView.scalesPageToFit = true; 

Se si utilizza lo storyboard, è necessario selezionare la casella di controllo "Ridimensionamento" ridimensiona la pagina per adattarla inserisci qui la descrizione dell'immagine


6

È NECESSARIO impostare scalesPageToFit = YES affinché qualsiasi pizzicamento e zoom funzioni su un UIWebView. Per me funziona.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.