현재 UIWebView를 사용하여 페이지를 서핑하는 iOS 앱을 작성하고 있습니다. 때로는 stringByEvaluatingJavaScriptFromString:
을 사용하여 UIWebView에서 요소를 동적으로 제거해야하지만, 1 초 iPod touch에서는 기본 UI가 최대 2 초, iPhone 3GS에서는 1 초 정도 걸리는 경우가 있습니다. 이를 제거하기 위해 사용하는 JavaScript는 간단합니다.UIWebView에서 HTML 요소를 제거하면 성능이 저하됩니다.
element.parentNode.removeChild(element);
더 복잡한 것은 없습니다. 동시에 OpenGL ES에서 몇 가지 매우 기본적인 2D 렌더링을하고 있는데, UIWebView를 다시 렌더링하면 주 스레드에서 단순한 CoreAnimation 만 사용하게 될 것입니다. 그것은 DOM 트리, 모든 요소 위치 등을 다시 계산해야 할 수 있습니까? 이게 정말 UI UI 스레드를 잠궈 야하나요? 모든 것을 잠근다는 것이 stringByEvaluatingJavaScriptFromString:
입니다. 이것은 정상적인 것이며 이러한 종류의 하드웨어에서 예상됩니까? 이상한 점은 불투명도와 높이 변화가있는 반 복합 MooTools 애니메이션을 웹 뷰에서 렌더링 할 수 있다는 것입니다. 단 하나의 요소를 제거하는 데 몇 초가 걸립니다.
개선을위한 아이디어가 있습니까? visibility: hidden
을 사용하는 요소를 그냥 숨기는 것이 더 좋을 수도 있고 opacity: 0
을 설정하는 것일 수도 있습니다. 어떤 생각이나 현명한 경험담?
가장 잘 작동하는 것으로 밝혀진 것은 불투명도를 설정하는 것입니다. 0은 약간 이상하지만 하드웨어 가속화가 원인이라고 생각합니다. 나는 setInnerHTML에게 소용돌이를 줄 것이다! – ErikPerik
불투명도를 0으로 설정하는 것은 모든 치수가 동일하기 때문에 페이지 리플 로우를 건너 뛰기 때문에 빠릅니다. 요소를 주변에두면 나중에 조작 할 때 속도가 느려지 게됩니다. 그러나 미래의 조작에 대해 걱정할 필요가 없다면 훌륭한 ... 불투명도가 좋은 해결책입니다! – TJez