2016-06-22 4 views
-1

Я Загружаю HTML String в UIWebView, текстовое содержимое загружается в секунду, но есть много изображений в HTML String, причина этого изображения my UIWebView замерзнуть, после загрузки всех изображений на мой экран бесплатно использовать.Замерзание экрана при загрузке UIWebview

Любые предложения по этому вопросу?

+0

Вы внесли делегат uiwebview? Можете ли вы показать свой код? –

+0

да, я реализовал делегатов, но я думаю, что проблемы в изображениях, после загрузки всех изображений, которые я получил бесплатно. –

+0

Является ли ваш 'webview' полным размером экрана? –

ответ

0

нагрузка WebView в диспетчерских нитях, попробуйте следующее:

dispatch_async(dispatch_get_main_queue(), ^{ 
    [self.webView loadHTMLString:@"htmlstring" baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]]; 
}); 
0

Я думаю, что это замораживание, потому что вы загружаете изображения из Интернета в основном потоке, который также отвечает за перерисовку своего пользовательского интерфейса. Загружая большие изображения внутри вашей нити, ваш пользовательский интерфейс замерзает.

Я бы порекомендовал перемещать код, который загружает изображения в отдельный поток. (вы можете использовать ответ @ Andey)

+0

Я попытался решить проблему, но все еще проблема, проблемы возникают в образах, потому что если я отключу сеть, тогда строка загрузится в UIWebview, и экран не замерзнет. –

+0

вы загружаете изображения из сети в свою основную thread.try, чтобы сделать отдельный поток. –

0

Как @Andey сказал, что вы должны отходить от главной очереди всякий раз, когда вещь, которую вы делаете, займет некоторое время, и вы не хотите, чтобы ваше представление замерзло.

Try Лекция 9: https://itunes.apple.com/en/course/developing-ios-8-apps-swift/id961180099


UPDATE (Swift вер.):

Хотя я не знаю, как написать это в Obj-C, он будет посмотрите примерно так в Swift, который вы можете позже перевести обратно в Obj-c.

dispatch_async(notTheMainQueue) { 
    // Some time consuming stuff you're doing (downloading data, calculating..) 
    ... 
    dispatch_async(dispatch_get_main_queue) { 
     // Set your view here, which dispatches *back* to the main queue and will not block your UI 
     ... 
    } 
} 
Смежные вопросы