2011-12-12 72 views
2

我有一個iPad應用程序,應該顯示移動谷歌UIWebView。它的寬度和iPhone一樣是320px,我已經設置了用戶代理,以便加載移動Google。但是該網站比UIWebView更寬,儘管該網站針對手機屏幕進行了優化。 這是我創建Web視圖代碼:iPad的UIWebView與iPhone網站

NSDictionary *userAgentDictionary = [[NSDictionary alloc] initWithObjectsAndKeys:@"Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/5.1 Mobile/9A405 Safari/7534.48.3", @"UserAgent", nil]; 
    [[NSUserDefaults standardUserDefaults] registerDefaults:userAgentDictionary]; 

    webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 44, 320, 480)]; 
    NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]; 
    [webView loadRequest:request]; 
    [self addSubview:webView]; 

這是怎麼看起來像此刻:

how it looks like now

我能做些什麼,使之適合?它應該與其他非移動頁面一起工作。

回答

1

改變這一行:

webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 44, 320, 480)]; 

這樣:

webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 44, self.view.frame.size.width, self.view.frame.size.height)]; 
+0

然後WebView被調整大小,但我希望webview像iPhone一樣是320x480像素。但是,內容不適合在iPhone上使用。 – icant

1

我知道這個人是老了,但以供參考。您無法默認設置UIWebView的User-Agent字符串(儘管您似乎可以在應用程序啓動時通過NSUserDefaults設置全局持久性更改)。但是,讓我們假設你只是想爲你的谷歌請求做到這一點,而不是一切。首先,最快,最骯髒的方法是method swizzling私人選擇器。然後,您可以爲每個NSURLRequest設置標題字段。這是使用私有API的風險,但它確實有效。

另一種方法涉及更多的工作,但不使用任何私有API,將子類NSURLProtocol,讓它接管HTTP模式,然後使用第三方HTTP請求系統(例如ASIHTTPRequest)來管理內容檢索。您將擁有最終控制權,然後您可以將自定義標題信息設置到請求中,而不需要任何私人API使用。