2010-08-19 16 views
17

Ho dovuto modificare un UIScrollView in un UIWebView a causa di motivi di formattazione.Come impostare l'offset del contenuto e la dimensione del contenuto in un UIWebView

C'è un problema però che ho bisogno di essere in grado di ottenere il contenuto compensata torna a 0, 0 (come sto usando riutilizzabili UIWebView s e la modifica dei contenuti) e ottenere la dimensione dei contenuti in modo da poter inserire un pulsante nella parte inferiore; ma UIWebView non sembra avere questo.

risposta

8

Il modo migliore che ho trovato per risolvere il problema era:

  1. Creare un UIWebView
  2. metterlo in una UIScrollView
  3. Aggiungere l'HTML in esso utilizzando "loadHTMLString"
  4. Utilizzando il "- (void) webViewDidFinishLoad: (UIWebView *) WebView {" metodo delegato Ho rilevare la dimensione della UIWebView

  5. Impostare la cornice del UIWebView alle dimensioni contenuti.

  6. Rimuovere interazione da parte UIWebView
  7. Impostare le dimensioni Contenuto del UIScrollView alle dimensioni contenuti.

Quindi utilizzare la funzionalità di UIScrollView anziché UIWebView.

Grazie jm

+2

cosa stai facendo nel 5 ° e 7 ° passo? Forse, qualche esempio di codice? Quale dimensione del contenuto? – marko

+4

Penso che questa sia una pessima idea dato che finirai per creare un UIWebView che esaurirà tutte le tue risorse - la creazione di un UIWebView alto di migliaia di pixel è una cattiva notizia. – Lee

7

Utilizzare JavaScript.

Penso che la riga successiva dovrebbe fare la magia:

[webView stringByEvaluatingJavaScriptFromString:@"window.scroll(0,0)"]; 
+0

Ill dare che una prova. Che ne dici di ottenere l'altezza del contenuto in modo da poter aggiungere un pulsante nella parte inferiore di UIWebView? – jodm

+0

Hmmm. Questo è più complicato. Credo che sia possibile. Suppongo che tu debba prendere in considerazione l'altezza della webView, l'altezza dell'HTML (usando JavaScript) e il livello di zoom corrente.Oppure, potresti disabilitare lo zoom (se non lo hai ancora fatto) e poi sarà molto più semplice. Individua il tuo pulsante in modo che il suo fondale si trovi a pochi pixel sopra l'altezza del webView. dovresti posizionarlo sopra l'HTML usando lo stile/CSS (google per "css floating div"). –

+0

A proposito, è possibile individuare un pulsante Objective-C (UIButton) sopra la visualizzazione Web. In questo modo non avrai bisogno di imparare CSS o JavaScript a tutti ... –

1

volta a ottenere il UIScrollView che si trova all'interno del UIWebView, sarà facile cambiare contentOffset e contentSize. Informazioni qui su come ottenere lo ScrollView: ScrollOffset in UIWebView?

3

Ora si può chiedere la contentSize proprietà della scrollView proprietà di un UIWebView. Ciò consente di modificare anche la dimensione del contenuto di tale visualizzazione Web utilizzando CGSizeMake (width, height).

27

Questo problema può essere risolto facilmente:

[[webView scrollView] setContentInset:UIEdgeInsetsMake(64, 0, 44, 0)]; 

Ricordate che UIEdgeInset è diverso da CGRect!
È possibile trovare una guida su UIEdgeInset in the iOS Developer Library.

1

funziona per me

[[webView scrollView] setContentInset:UIEdgeInsetsMake(64, 0, 44, 0)]; 
+1

hai appena scritto ** esattamente ** la stessa risposta di cui sopra? – agandi

+0

@agandi si, anche io ho informato che questo funziona per me. Perché non posso contrassegnare quella risposta come utile con bassa reputazione –

Problemi correlati