【问题标题】:iPad UIWebView with iPhone sitesiPad UIWebView 与 iPhone 网站
【发布时间】:2011-12-12 16:26:28
【问题描述】:

我在 iPad 应用中有一个 UIWebView,应该显示移动 Google。它像 iPhone 一样宽 320 像素,我已经设置了用户代理,以便它加载移动 Google。但是该网站比 UIWebView 更宽,尽管该网站针对移动屏幕进行了优化。 这是我创建 Web 视图的代码:

    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];

现在是这样的:

我可以做些什么来使它适合?它也应该适用于其他非移动页面。

【问题讨论】:

    标签: ios ipad uiwebview


    【解决方案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)];
    

    【讨论】:

    • 然后调整 WebView 的大小,但我希望 webview 为 320x480px,就像 iPhone 一样。但是,内容不适合在 iPhone 上。
    【解决方案2】:

    我知道这是旧的,但供参考。默认情况下,您无法设置 UIWebView 的 User-Agent 字符串(尽管您似乎可以在应用启动时通过 NSUserDefaults 设置全局持久更改)。但是让我们假设您只想为您的 google 请求执行此操作,而不是所有内容。首先,最快、最肮脏的方法是method swizzling 一个私人选择器。然后,您将能够为每个 NSURLRequest 设置标头字段。使用私有 API 存在风险,但它确实有效。

    另一种方法,涉及更多工作,但不使用任何私有 API,将子类化 NSURLProtocol,让它接管 HTTP 模式,然后使用第 3 方 HTTP 请求系统(例如 ASIHTTPRequest)来管理内容检索。您将拥有最终控制权,然后您可以将自定义标头信息设置到请求中,而无需使用任何私有 API。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多