Как заставить UIWebView загружаться перед переходом

iOS 6.1

Когда кнопка нажата, я хочу выполнить переход от просмотра изображения к веб-просмотру. Проблема в том, что при первой загрузке веб-просмотра страница становится белой, а html-страница загружается после перехода:

NepContainerView *containerInFrame = (NepContainerView *)[self view];

UIWebView *webView = [[UIWebView alloc] initWithFrame:self.view.frame];

[webView loadHTMLString:html baseURL:nil];

[UIView transitionWithView:containerInFrame
                      duration:DURATION_TRANS_PHOTO_DESC
                       options:UIViewAnimationOptionTransitionFlipFromLeft
                    animations:^{
                        [containerInFrame addSubview:webView];
                        [sender setTitle:@" Photo "];
                    }
                    completion:NULL];

Как заставить html-страницу загружаться перед переходом?


person Javide    schedule 26.08.2013    source источник


Ответы (2)


вы также можете использовать эту библиотеку WebContentView.

эта библиотека имеет один метод с именем

+ (void)preloadContent:(NSString *)content;

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

Надеюсь, поможет.

Вот полезная ссылка, которая поможет вам

Предварительная загрузка UIWebView, избегая мигания белого экрана

person User 1531343    schedule 26.08.2013
comment
Есть ли способ добиться того же результата без использования внешней библиотеки? - person Javide; 26.08.2013
comment
ссылка, которую я предложил, также будет работать, и ответ @Developer также вы можете попробовать - person User 1531343; 26.08.2013
comment
Решение, указанное в ссылке, иногда работает, а иногда нет, поэтому я не уверен, что его можно считать решением, по крайней мере, для моего случая. - person Javide; 26.08.2013
comment
Сказав это, это, безусловно, смягчает проблему. Если вы добавите ссылку в качестве ответа, я приму ее. - person Javide; 26.08.2013

Вы должны установить делегата UIWebView, и когда - (void)webViewDidFinishLoad:(UIWebView *)webView; будет вызываться, затем вызовите свой метод для перехода

[UIView transitionWithView:containerInFrame
                      duration:DURATION_TRANS_PHOTO_DESC
                       options:UIViewAnimationOptionTransitionFlipFromLeft
                    animations:^{
                        [containerInFrame addSubview:webView];
                        [sender setTitle:@" Photo "];
                    }
                    completion:NULL];
person Nishith Shah    schedule 26.08.2013
comment
Это звучит как хороший план, но почему-то я изо всех сил пытаюсь установить делегата. В моем заголовочном файле я добавил: @interface PhotoNepVC: UIViewController ‹UIScrollViewDelegate, UIWebViewDelegate› После создания веб-просмотра: webView.delegate = self; но делегат не вызывается. Что мне здесь не хватает? - person Javide; 26.08.2013
comment
Я не думаю, что это решение будет работать. Делегат работает, только если я добавляю webView в контейнер, что должно быть сделано во время анимации. Даже если добавить в контейнер скрытый webView и сделать его видимым с анимацией, это не сработает. - person Javide; 26.08.2013
comment
вы делаете [containerInFrame addSubview: webView]; делайте это, когда вы выделяете UIWebView, а дескриптор использует свойство видимости. - person Nishith Shah; 26.08.2013
comment
Как я уже сказал, я попытался использовать свойство видимости, и оно по-прежнему загружает страницу как пустую. Более того, я не хочу создавать связь между делегатом webViewDidFinishLoad и переходом, потому что этот веб-просмотр должен загружать другой контент, который не должен запускать какой-либо переход. - person Javide; 26.08.2013