如何在 iOS UIWebView 中缩放 iFrame
How to scale an iFrame inside of iOS UIWebView
问题:
我发现原生 iOS UIWebView 在 CSS3 transform:scale3D(scalar, scalar, 1)
方面存在问题
我们有一个 <iframe>
,其中包含像素完美的艺术,由许多元素(文本、矩形、视频等)组成,我的任务是缩放 <iframe>
使其适合全屏,不仅仅是设计的 320x480 或其他
首先,触摸事件根本没有传播。其次,当用户按住 <iframe>
时,他们可以看到 DOM 之前不正确位置的元素的轮廓,尺寸不正确(在 <iframe>
被缩放以适合屏幕)
蓝色区域应该是整个屏幕,不是原来的位置
最重要的是,有时缩放会在 UIWebView 决定不重新绘制的地方引入随机的水平/垂直线
我的尝试:
我尝试使用 css zoom:
,我知道它在某种程度上可以替代 <meta>
标签视口缩放,但我仍然看到随机未绘制的线条。我不确定我是否尝试过使用硬件加速(在 z / 3d space 中转换)但我很确定我做了,与常规 transform:scale3d
方法相同
我也试过抓取配置对象,它有x
、y
、width
、height
等属性,但似乎有些属性需要在其他人没有的地方进行四舍五入(文本字体大小和字母间距,例如,边框宽度等)。栅格化令人头疼,我似乎无法获得像素完美的缩放 <iframe>
我不确定哪些元素支持小数 px
CSS,所以我正在考虑转换一切都 em
我还没有使用实际的 <meta>
标签,因为它不能动态附加。需要在呈现 DOM 之前在 HTML 上。我没有使用 <meta>
的另一个原因是因为我需要在编写 <meta>
属性之前知道视口大小(如果有人确认此解决方案有效,我可能会从本地对应项查询)
问题:
有没有人遇到过这个问题?如果标量可能是 1.333333,是否有可能获得像素完美的缩放表示?我知道 Apple 正在用可嵌入的 Safari 实现替换 UIWebView(移动网络适用于我的用例,只是不是原生 iOS),但与此同时,iOS 有希望吗?链接高度赞赏!提前致谢..
我的同事找到了答案!
答案:
您无法从外部 DOM 缩放 <iframe>
,您必须 postMessage()
进入 <iframe>
并使用 document.body.style.webkitTransform = "scale(1337)"
希望这对有需要的人有所帮助!
问题:
我发现原生 iOS UIWebView 在 CSS3 transform:scale3D(scalar, scalar, 1)
我们有一个 <iframe>
,其中包含像素完美的艺术,由许多元素(文本、矩形、视频等)组成,我的任务是缩放 <iframe>
使其适合全屏,不仅仅是设计的 320x480 或其他
首先,触摸事件根本没有传播。其次,当用户按住 <iframe>
时,他们可以看到 DOM 之前不正确位置的元素的轮廓,尺寸不正确(在 <iframe>
被缩放以适合屏幕)
蓝色区域应该是整个屏幕,不是原来的位置
最重要的是,有时缩放会在 UIWebView 决定不重新绘制的地方引入随机的水平/垂直线
我的尝试:
我尝试使用 css zoom:
,我知道它在某种程度上可以替代 <meta>
标签视口缩放,但我仍然看到随机未绘制的线条。我不确定我是否尝试过使用硬件加速(在 z / 3d space 中转换)但我很确定我做了,与常规 transform:scale3d
方法相同
我也试过抓取配置对象,它有x
、y
、width
、height
等属性,但似乎有些属性需要在其他人没有的地方进行四舍五入(文本字体大小和字母间距,例如,边框宽度等)。栅格化令人头疼,我似乎无法获得像素完美的缩放 <iframe>
我不确定哪些元素支持小数 px
CSS,所以我正在考虑转换一切都 em
我还没有使用实际的 <meta>
标签,因为它不能动态附加。需要在呈现 DOM 之前在 HTML 上。我没有使用 <meta>
的另一个原因是因为我需要在编写 <meta>
属性之前知道视口大小(如果有人确认此解决方案有效,我可能会从本地对应项查询)
问题:
有没有人遇到过这个问题?如果标量可能是 1.333333,是否有可能获得像素完美的缩放表示?我知道 Apple 正在用可嵌入的 Safari 实现替换 UIWebView(移动网络适用于我的用例,只是不是原生 iOS),但与此同时,iOS 有希望吗?链接高度赞赏!提前致谢..
我的同事找到了答案!
答案:
您无法从外部 DOM 缩放 <iframe>
,您必须 postMessage()
进入 <iframe>
并使用 document.body.style.webkitTransform = "scale(1337)"
希望这对有需要的人有所帮助!