Ios 如何使UIWebView中显示的SVG文件的元素居中?
我在Ios 如何使UIWebView中显示的SVG文件的元素居中?,ios,uiwebview,svg,Ios,Uiwebview,Svg,我在UIWebView中显示了一个SVG文件。此SVG包含许多表示可触摸元素的标记。加载SVG文件后,我想滚动视图,使特定元素位于屏幕中央附近 到目前为止,我得到的是这样的东西: - (void)webViewDidFinishLoad:(UIWebView *)webView { [diagramView stringByEvaluatingJavaScriptFromString:@"" "var e = document.getElementById('myelem
UIWebView
中显示了一个SVG文件。此SVG包含许多表示可触摸元素的
标记。加载SVG文件后,我想滚动视图,使特定元素位于屏幕中央附近
到目前为止,我得到的是这样的东西:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[diagramView stringByEvaluatingJavaScriptFromString:@""
"var e = document.getElementById('myelement');"
"var top = e.offsetTop;"
"while (e.offsetParent) {"
" e = e.offsetParent;"
" top += e.offsetTop;"
"}"
"alert(top);"
//"scrollTo(0, top);"
];
}
但是,无论何时运行,top
最终都是0。元素e
指向SVG文件的正确
元素(使用警报(e.id)
检查)。我似乎找不到提供实际偏移量的元素属性的正确组合
我可以硬编码一组合适的偏移量,但我真的不想。请参阅
getBBox
,文档记录在http://www.w3.org/TR/SVG11/types.html#__svg__SVGLocatable__getBBox
(很抱歉,无法作为链接发布,因此存在错误)
一个快速的演示是使用Chrome加载并运行$('#path3695').getBBox().y
具体来说,您只需使用:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[diagramView stringByEvaluatingJavaScriptFromString:@""
"var e = document.getElementById('myelement');"
"var top = e.getBBox().y;"
"alert(top);"
"scrollTo(0, top);"
];
}
据我所知,UIWebView使用URI加载SVG文档。因此,如果添加一个要显示的元素Id的片段标识符,它是否将显示集中在该元素上?加载时,someDrawing.svg是您正在加载的,aId是您希望显示集中在@RobertLongson上的元素的id:我忘了提到我尝试过,但我无法在最后加载带有URL片段的文件资源。此外,即使加载了,它也会将元素滚动到视图的顶部,但我希望元素更多地位于中心(我希望在所选元素的下方和上方看到图表的某些部分)。我也尝试了
e.scrollIntoView()
,但似乎根本不起作用(没有出现滚动,就像问题中的代码一样)。Hi@GregHewgill只是想检查下面的内容是否对您有效