我在UIWebView
内显示了一个SVG文件。此SVG包含许多<a>
标记,用于指示可触摸元素。加载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文件的正确<a>
元素(使用alert(e.id)
进行检查)。我似乎无法找到能够给出实际偏移量的元素属性的正确组合。
我可以硬编码一组合适的偏移量,但我真的不想。
答案 0 :(得分:0)
请参阅getBBox
,记录在http://www.w3.org/TR/SVG11/types.html#__svg__SVGLocatable__getBBox
(抱歉无法发布链接,SO bug)
快速演示是使用Chrome加载https://upload.wikimedia.org/wikipedia/commons/0/07/Wikipedia_logo_(svg).svg并运行$('#path3695').getBBox().y
具体而言,只需使用:
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
[diagramView stringByEvaluatingJavaScriptFromString:@""
"var e = document.getElementById('myelement');"
"var top = e.getBBox().y;"
"alert(top);"
"scrollTo(0, top);"
];
}