如何让iOS UIWebView正确显示移动网站?

时间:2015-03-11 10:44:02

标签: ios iphone xcode html5 uiwebview

我是iOS应用开发的新手,我只是尝试使用 UIWebView 在我的应用中显示移动网站并且不太成功。

我所做的只是在Google搜索过程中发现的一些最小的Xcode项目配置和编码:

  1. 使用Single View Application模板在Xcode中创建一个新的iOS应用程序项目。

  2. 网络视图Object Library拖到View Controller Main.storyboard的场景。

  3. 按住Control键的同时,将网络视图View Controller场景拖到ViewController.h编辑器, 像这样的源代码行:

    @property (weak, nonatomic) IBOutlet UIWebView *myWebView;
    
  4. 在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]];
    }
    
  5. 这就是我所做的一切(以及那些教程告诉我的所有内容)。在我构建并运行应用程序(在模拟器和真实的iphone设备上)之后,该网站确实加载了应用程序的视图(并且确实加载了移动版本而不是PC版本),但它显示了网站,就好像视图很多大于实际的iPhone屏幕。这是一个screeshot(在这种情况下亚马逊,但其他网站基本相同):

    enter image description here

    如何让iOS UIWebView正确显示移动网站?


    刚刚尝试了Dipen Chudasama关于禁用“用户大小类”选项的建议,这是所有这些建议的第一次,结果确实发生了一些变化(从左对齐到中心对齐),但仍然没有我在找什么。这是截图:

    enter image description here


    修改

    感谢您热心人士给出的所有建议。正如我所理解的那样,在UIWebView中加载像amazon.com这样的网站应该是一项相当容易的任务,但是,我没有成功完成任何建议。

    如果有人可以与我分享(通过Github或类似的)只是一个示例xcode项目(从头开始使用最新版本的xcode工具链),除了可以正确加载amazon.com的UIWebView之外,这将是很棒的。这样我可以逐行进行差异操作,并且可以在我自己的项目中找到我做错的事情。

4 个答案:

答案 0 :(得分:2)

UIWebView有一个名为" scalesPageToFit"的属性:

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

应该这样做。

答案 1 :(得分:0)

您可以使用此UIWebview属性webView.scalesPageToFit = YES;

缩放页面以适合屏幕宽度

否则,您可以在UIWebView中运行js命令来执行缩放:

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

答案 2 :(得分:0)

我明白了..你只是在故事板中设置iPhone大小视图而不是任何大小,意味着禁用“使用大小类”复选框并查看,这将起作用.. :)

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. 

 you have to set appropriate constraint for this.

答案 3 :(得分:0)

我和@goodbyeera有同样的问题,然后意识到我没有在AutoLayout上设置UIWebView约束。因此,当加载WebView时,它对于iPhone屏幕来说太大了。通过添加约束以使UIWebView适合屏幕,将其全部修复。希望这对你有帮助。