여러 뷰 컨트롤러에서 UIWebViews
을 사용하는 응용 프로그램이 있습니다. UIWebViews
은 로컬에서 생성 된 html을 렌더링하는 데 사용되며 느린 네트워크 액세스는 필요하지 않습니다.webViewDidFinishLoad까지 viewWillAppear 연기하기
메모리를 절약하기 위해 viewcontroller viewWillAppear
콜백 메시지가 표시되면 요청시에만로드합니다. didReceiveMemoryWarning
메시지에 대한 응답으로 오프 스크린 인스턴스를 언로드합니다.
문제는 사용자가 렌더링되는 html을 보게되고 때로는 스타일이 깜박이고 불쾌한 여러 가지 유물이 함께 표시된다는 것입니다. 나는 오히려 렌더링이 화면 밖에서 이루어지기를 바라며, 준비가 완료되면 완전히 렌더링 된 뷰를 표시합니다.
UIWebView가 완전히 렌더링 될 때까지 viewWillAppear
이 돌아 가지 않도록하려면 매우 정돈되어야합니다. 그러나 어떻게?
나는 UIWebView
에게 무엇을 렌더링 할지를 loadHTMLString:baseURL:
메시지로 보냅니다. 이것은 비동기식이며, 얼마 후 (곧) webview의 델리게이트는 webViewDidFinishLoad
으로 다시 호출됩니다.
NSDefaultRunLoopMode
또는 UITrackingRunLoopMode
을 실행하는 내부의 런 루프를 실행하여 실험했습니다. 이 (가 거래
내에서 호출 로그
[CATransaction의 동기화]에 불평하지만, 작업을 수행)하지만 장치가
webViewDidFinishLoad
가 호출되고 있지 않습니다와 함께, 교착 시뮬레이터에서 작동합니다.합니다 (
UIWebView
로딩 속성이 나는loadHTMLString:baseURL:
를 호출하고 콜백을 얻기 전에 그것은 사실이 아니에요 적어도, 후. 작동하지 않는 것처럼 또한, 그것은 보인다.) 솔루션의
"loading"속성이 작동하지만 UIWebView가 화면에 나타나면로드가 실제로 트리거됩니다 (webViewDidStartLoad 및 WebViewDidFinishLoad 추적). 팁은 "0.01의 불투명도로 화면에 추가"라고 말하지만 아직 화면 상에 있지 않은 viewcontroller에는 도움이되지 않습니다 .... –