如何在iOS UIWebView

时间:2015-04-30 04:29:47

标签: javascript ios css uiwebview scale

问题:

我一直看到有关CSS3 transform:scale3D(scalar, scalar, 1)

的本机iOS UIWebView出现问题

我们有一个<iframe>,其中包含像素完美的艺术品,由许多元素(文字,矩形,视频等)组成,我的任务是缩放<iframe>适合全屏的内容,而不是只是设计的320x480或其他

首先,触摸事件根本不会传播。其次,当用户按住<iframe>时,他们可以看到以前错误位置的元素的DOM轮廓,大小不正确(在<iframe>缩放以适应屏幕之前)

蓝色区域应该是整个屏幕,而不是原始位置 User holds down, sees shadow of where it was before transform scale

最重要的是,有时缩放会引入随机水平/垂直线,UIWebView决定不重新绘制

我的尝试:

我尝试使用css zoom:我理解它有点替代<meta>标记视口缩放,但我仍然看到随机未上漆的线条。我不确定我是否尝试使用硬件加速(在z / 3d空间中转换)但我确信我做了,与常规transform:scale3d方法相同

我还尝试抓取配置对象,该对象具有xywidthheight等属性,但似乎需要对某些属性进行舍入其他人没有(例如文本字体大小和字母间距,边框宽度等)。光栅化导致头痛,我似乎无法获得像素完美,缩放<iframe>我不确定哪些元素支持十进制px CSS,所以我正在考虑将所有内容转换为{{ 1}}

我还没有使用实际的em标记,因为它无法动态追加..在呈现DOM之前需要在HTML上。我没有使用<meta>的另一个原因是因为我需要在编写<meta>属性之前知道视口大小(如果有人确认此解决方案有效,我可以从本地对应方查询)

问题:

以前有人遇到过这个问题吗?如果标量可能是1.333333,是否有可能获得像素完美的缩放表示?我知道Apple正在用可嵌入的Safari实现取代UIWebView(移动网络适用于我的用例,而不是原生iOS),但与此同时,iOS有什么希望吗?链接高度赞赏!提前谢谢..

1 个答案:

答案 0 :(得分:0)

我的同事找到了答案!

答案:

您无法从外部DOM扩展<iframe>,您必须postMessage()加入<iframe>并使用document.body.style.webkitTransform = "scale(1337)"

希望这有助于其他有需要的人!

信用最终转到http://adexcite.com/iframe_scaling_test.html