2015-03-11 11 views
5

Sono nuovo allo sviluppo di app per iOS e ho appena provato a utilizzare UIWebView per visualizzare un sito Web mobile nella mia app e non ha avuto abbastanza successo.Come rendere iOS UIWebView visualizzare correttamente un sito Web mobile?

Quello che ho fatto è solo un po 'di configurazione di progetto Xcode minima e la codifica che ho trovato durante alcuni sforzi Googling:

  1. Creare un nuovo progetto di applicazione iOS in Xcode utilizzando il modello Single View Application.

  2. Trascinare un Web View dalla Object Library alla scena di Main.storyboardView Controller .

  3. Tenendo premuto il tasto Control, trascinare il Web View dalla scena View Controller per l'editor ViewController.h, risultando una riga di codice source come questo:

    @property (weak, nonatomic) IBOutlet UIWebView *myWebView; 
    
  4. Aggiungere il seguente codice nel ViewController .m:

    - (void)viewDidLoad { 
        [super viewDidLoad]; 
        // Do any additional setup after loading the view, typically from a nib. 
        NSURL *url = [NSURL URLWithString:@"http://www.amazon.com"]; 
        [self.myWebView loadRequest:[NSURLRequest requestWithURL:url]]; 
    } 
    

Questo è tutto quello che ho fatto (e anche tutto quello che quei tutorial mi hanno detto). Dopo aver creato e eseguito l'app (sul simulatore e sul dispositivo iphone reale), il sito ha caricato la vista dell'app (e ha caricato la versione mobile invece della versione PC), ma ha visualizzato il sito come se la vista fosse molto più grande dello schermo iphone reale. Ecco uno screeshot (Amazon in questo caso, ma fondamentalmente lo stesso per altri siti):

enter image description here

Cosa devo fare per rendere l'iOS UIWebView visualizzare un sito web mobile in modo corretto?


appena provato il suggerimento di Dipen Chudasama di disattivare l'opzione "User classi dimensionali", per la prima volta di tutti quei suggerimenti, il risultato è cambiata un po '(da sinistra-align a sorta di centro-align) , ma ancora non quello che sto cercando. Ecco lo screenshot:

enter image description here


EDIT:

Grazie per tutti i suggerimenti dati da voi persone entusiaste. Caricare un sito come amazon.com in un UIWebView dovrebbe essere un compito piuttosto facile, come ho capito, tuttavia, non ho avuto successo con nessuno dei suggerimenti.

Sarebbe bello se qualcuno potesse condividere con me (tramite Github o simili) solo un progetto di xcode di esempio (partendo da zero con l'ultima versione della catena di strumenti xcode) con nient'altro che un UIWebView che potrebbe caricare correttamente amazon.com . In questo modo posso fare una differenza riga per riga e riuscire a trovare ciò che ho sbagliato nel mio progetto.

+0

dove si imposta la cornice di visualizzazione Web? o quale cornice hai impostato nello storyboard? –

+0

@DipenChudasama Una volta ho provato ad assegnare 'self.view.frame' a'self.myWebView.frame' in' viewdidLoad() ', ma il risultato era lo stesso – goodbyeera

+0

vedere la mia risposta e provarla. –

risposta

0

È possibile scalare la pagina per adattarla alla larghezza dello schermo con questa proprietà UIWebviewwebView.scalesPageToFit = YES;

In caso contrario è possibile eseguire un comando js nella UIWebView di fare la scala:

NSString *js = [NSString stringWithFormat:@"document.body.style.zoom = 0.8;"]; 
[webView stringByEvaluatingJavaScriptFromString:js]; 
+0

Già provato. Il risultato non è cambiato. – goodbyeera

+0

Ho modificato la mia risposta con un altro metodo per farlo. –

+0

Ho appena provato il metodo js. Non ha funzionato neanche. – goodbyeera

1

L'UIWebView ha una proprietà chiamato "scalesPageToFit":

self.myWebView.scalesPageToFit = YES; 
self.myWebView.contentMode = UIViewContentModeScaleAspectFit; 

dovrebbe fare il trucco.

+0

Già provato. Non ha funzionato però. – goodbyeera

+0

Versione rapida di questo? – User

0

ho ottenuto it..you appena impostato iPhone vista dimensione in storyboard al posto di qualsiasi dimensione, significa disabilitare l'uso classi dimensionali Casella di controllo e vedere, questo lavoro .. :)

enter image description here

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSURL *url = [NSURL URLWithString:@"http://www.amazon.com"]; 
    [self.myWebView loadRequest:[NSURLRequest requestWithURL:url]]; 
} 

Thats it, Try this one only. 

O

you have to set appropriate constraint for this. 
+0

Ho appena provato questo suggerimento e il risultato è stato lo stesso. – goodbyeera

+0

L'ho preso ... basta impostare la visualizzazione di dimensioni iPhone 5 nello storyboard invece di qualsiasi dimensione, significa disabilitare la casella Usa classi di dimensioni e vedere, questo funzionerà .. :) –

+0

Grazie per il vostro consiglio. Si prega di vedere la mia modifica della domanda originale sul risultato di provare il tuo suggerimento. – goodbyeera

0

ho avuto lo stesso problema, come si @goodbye era, e poi ho realizzato che non avevo impostato i vincoli AutoLayout sullo UIWebView. Pertanto, quando il WebView caricato era troppo grande per lo schermo di iPhone. Aggiungendo i vincoli per adattare lo UIWebView allo schermo, è stato risolto tutto. Spero che questo possa aiutarti.

Problemi correlati