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

如何使iOS UIWebView正确显示移动网站?,ios,iphone,xcode,html,uiwebview,Ios,Iphone,Xcode,Html,Uiwebview,我是iOS应用程序开发新手,我刚刚尝试使用UIWebView在我的应用程序中显示一个移动网站,但并不十分成功 我所做的只是在谷歌搜索过程中发现的一些最小的Xcode项目配置和编码: 使用单一视图在Xcode中创建一个新的iOS应用程序项目 应用程序模板 将Web视图从对象库拖动到视图控制器 Main.storyboard的场景 按住Control键的同时,从视图中拖动Web视图 控制器场景切换到ViewController.h编辑器,生成一个 源代码行如下所示: @property (weak,

我是iOS应用程序开发新手,我刚刚尝试使用UIWebView在我的应用程序中显示一个移动网站,但并不十分成功

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

  • 使用
    单一视图在Xcode中创建一个新的iOS应用程序项目
    应用程序
    模板

  • Web视图
    对象库
    拖动到
    视图控制器
    Main.storyboard
    的场景

  • 按住Control键的同时,从
    视图中拖动Web视图
    控制器
    场景切换到
    ViewController.h
    编辑器,生成一个 源代码行如下所示:

    @property (weak, nonatomic) IBOutlet UIWebView *myWebView;
    
  • 在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]];
    }
    
  • 这就是我所做的一切(以及那些教程告诉我的一切)。在我构建并运行应用程序(在模拟器和真实的iphone设备上)后,该站点确实加载了应用程序的视图(并且加载了移动版本而不是PC版本),但它显示的站点似乎比实际的iphone屏幕大得多。这是一个screeshot(本例中为亚马逊,但其他网站基本相同):

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


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


    编辑

    谢谢你们热情的人们提出的所有建议。据我所知,在UIWebView中加载像amazon.com这样的网站应该是一项相当简单的任务,然而,我没有成功地提出任何建议


    如果有人能(通过Github或类似的方式)与我分享一个示例xcode项目(从零开始,使用最新版本的xcode工具链),除了可以正确加载amazon.com的UIWebView之外什么都没有,那就太好了。这样,我就可以逐行进行区分,并可能找到我在自己的项目中做错的地方。

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

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

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

    UIWebView有一个名为“scalesPageToFit”的属性:


    应该可以了。

    我明白了。您只需在情节提要中设置iPhone大小视图,而不是任何大小,意味着禁用使用大小类复选框,然后查看,这将起作用。;)

     you have to set appropriate constraint for this.
    

    我与您@goodbyeera遇到了相同的问题,然后意识到我没有在
    UIWebView
    上设置
    AutoLayout
    约束。因此,当
    WebView
    加载时,它对于iphone屏幕来说太大了。通过添加约束以使
    UIWebView
    适合屏幕,修复了所有问题。希望这可能会对您有所帮助。

    使用另一种方法编辑了我的答案。将webview委托设置为self并实现此委托方法-
    (BOOL)webview:(UIWebView*)webview shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType{webView.scalesPageToFit=YES;//在此处设置返回YES;}
    尝试了上面的建议,结果仍然相同。您在哪里设置了web视图框架?或者在故事板中设置了什么框架?@DipenChudasama我曾经尝试在
    viewdiload()中将
    self.view.frame
    分配给
    self.myWebView.frame
    ,但结果是相同的请看我的答案并尝试一下。刚刚尝试了这个建议,结果是一样的。我得到了。你只需在故事板中设置iPhone 5大小视图,而不是任何大小,意味着禁用使用大小类复选框,然后查看,这将起作用。谢谢你的建议。请查看我对tr结果原始问题的编辑给出你的建议。现在我想看看你的更新代码。你对代码做了任何更改吗?我尝试了所有的组合:有和没有设置web视图框架,有和没有设置scalesPageToFit。这个的Swift版本?
    - (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.