3

内に表示される SVG ファイルがありますUIWebView。この 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 になります。要素は、SVG ファイルeの正しい要素を指してい<a>ます ( でチェックされますalert(e.id))。実際のオフセットを与える要素属性の適切な組み合わせが見つからないようです。

適切なオフセット セットをハード コードすることはできますが、実際にはそうしたくありません。

4

1 に答える 1

0

getBBoxに記載されている を参照してくださいhttp://www.w3.org/TR/SVG11/types.html#__svg__SVGLocatable__getBBox(リンクとして投稿できません、SO バグ)

簡単なデモンストレーションは、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);"
    ];
}
于 2014-02-21T15:57:41.500 に答える