仅 iPhone 应用程序中的 UIWebView 显示在 iPad 上

Posted

技术标签:

【中文标题】仅 iPhone 应用程序中的 UIWebView 显示在 iPad 上【英文标题】:UIWebView in iPhone only app displayed on iPad 【发布时间】:2012-08-30 09:45:56 【问题描述】:

我有一个关于在 iPad 上显示的 iPhone 应用程序(不是通用 iPhone/iPad)中的 UIWebView 的问题。有一些方法可以将应用程序视为 iPhone 视网膜应用程序 (960x640),但是我无法找到在 iPad 上以与在 iPhone 上显示相同的方式显示 UIWebView 的方式。整个视图和字体都是模糊的,因为 UIWebView 认为它不是视网膜显示。

有没有办法让它认为它是视网膜显示并渲染 960x640 而不是 480x320 放大?

UIWebView contentScaleFactor 属性没有改变任何东西。该网站在 iPhone 4 上完美运行,具有正确的字体和视网膜图像。如果我将 UIWebView 框架设置为 (0, 0, 960, 640) 并按比例缩小,那么网站上的所有内容也会按比例缩小,所以我认为这不是正确的方式。

编辑: 作为内容,我正在加载一个本地站点,该站点完美地显示在 iPhone/iPhone(视网膜)上:

html 的正文部分:

(...)
<body>
    <h1>Header</h1>
    <p>Some paragraphs</p>
    <img src="image.png" width=250px height=200px/>     
</body>
(...)

样式.css:

body 

    width:400px;
    height:100%;

编辑2: 这是我得到的screenshot 的链接 - 在 iPad 上,iPhone 视网膜 UIWebView 像在 iPhone 上一样显示并放大了两次,导致结果模糊。

【问题讨论】:

你在 webview 上加载了什么? @jcesar 我正在加载一个本地网站,该网站的大小和位置适合 iPhone/iPhone 视网膜。 不明白你是想模拟还是使用iPad Retina显示屏。 再说一次:我有一个 iPhone 应用程序,可以在 iPad1/iPad2 上运行。当您在 iPad 上运行 iPhone 应用程序时,它会在 480x320 窗口中运行。您可以将其最大化为 960x640 窗口 - 在这种情况下,它应该被视为具有 960x640 分辨率的 iPhone Retina 应用程序。但是,UIWebView 检查 iPad 没有视网膜显示(这是真的)并加载帧 480x320 的内容,然后将其拉伸到看起来很糟糕的 960x640。问题是,如何强制 UIWebView 认为它在 iPhone 视网膜上运行。 【参考方案1】:

不,当您按下 2x 按钮时,您的应用会放大,而您无法在代码中检测到这一点。

这对 Apple 来说是一个很大的失误,当应用程序在 iPad 上以 2x 模式显示时,它本应在视网膜模式下运行,但是这意味着你需要在应用程序进入 2x 模式时重新启动它。

您的应用程序的 Retina 版本将用于新 iPad,但此处的 agin 缩放只会使像素翻倍。

【讨论】:

我同意Apple默认不支持它,但是如果您使用一些适用于纯OpenGl的框架,您可以自己处理。这就是我在应用程序的其他部分所做的,我认为有一种方法可以强制 UIWebView 也以视网膜模式显示。也许有人知道如何作弊。不管怎样,谢谢你的回答;)

以上是关于仅 iPhone 应用程序中的 UIWebView 显示在 iPad 上的主要内容,如果未能解决你的问题,请参考以下文章

UIWebview 中的 HTTPS url 在 iphone / ipad 中不起作用

UIWebView Appstore 审批流程中的 iPhone Paypal

如何仅加载请求的 UIWebView url 的特定部分?

如何仅在给定帧中限制 UIWebView 中的视频播放

iPhone 5 uiwebview 问题

iPhone UIWebView 播放 MP3。解雇协议?