現在、ページをサーフィンするために UIWebView を使用する iOS アプリを作成しています。を使用して UIWebView の要素を動的に削除する必要がある場合もありますstringByEvaluatingJavaScriptFromString:
が、これによりメイン UI がロックされることがあり、第 1 世代の iPod touch では最大 2 秒、iPhone 3GS では 0.5 秒程度かかることがあります。私がそれを削除するために使用している JavaScript は次のとおりです。
element.parentNode.removeChild(element);
それ以上に複雑なことはありません。同時に、OpenGL ES で非常に基本的な 2D レンダリングを行っています。UIWebView の再レンダリングがロックアップしない場合は、メイン スレッドで単純な CoreAnimation を使用します。DOM ツリー、すべての要素の位置などを再計算する必要があるのでしょうか? これは本当にメイン UI スレッドをロックする必要がありますか? 私が呼んでいるのはstringByEvaluatingJavaScriptFromString:
、すべてをロックすることですか?これは正常で、この種のハードウェアで予期されることですか? 奇妙なことは、半複雑な MooTools アニメーションを webview でレンダリングし、不透明度と高さを変更できることですが、1 つの要素を削除するのに数秒かかります。
誰かが改善のアイデアを持っていますか? たぶん、使用して要素をvisibility: hidden
非表示にする方が良いか、または設定しopacity: 0
ますか? 経験からの考えや賢明な言葉はありますか?