UIWebView изменить размер в соответствии с контентом - PullRequest
2 голосов
/ 06 мая 2011

Вот то, что я пытаюсь сделать,

У меня есть веб-представление, кадр которого я устанавливаю как

self.webView.frame = CGRectMake(0, Y,screenWidth,1);

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

screenWidth устанавливается на 320 или 480 в зависимости от ориентации устройства, которое также работает нормально.

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

Содержимое может быть обычным текстом, который я загружаю как

        NSData* data=[msgBody dataUsingEncoding:NSUTF8StringEncoding];             
        if (data) 
        [self.webView loadData:data MIMEType:@"text/plain" textEncodingName:@"UTF-8" baseURL:nil];  

, или HTML, который я загружаю как

        [self.webView loadHTMLString:htmlMsgBody baseURL:nil]; 

В моемМетод WebViewDidFinishLoad, я делаю это,

- (void)webViewDidFinishLoad:(UIWebView *)webview {

    CGRect frame = self.webView.frame;
    CGSize fittingSize = [self.webView sizeThatFits:CGSizeZero];
    frame.size = fittingSize;
    self.webView.frame = frame;

   CGFloat totalHeight = self.webView.frame.origin.y+self.webView.frame.origin.height+30;

    //the webView is scrolllocked and put on a scrollView so I do this

    [self.theScrollView setContentSize:CGSizeMake(screenWidth, totalHeight)];
}

Мой scrollView, в который помещается webView, может прокручиваться горизонтально.Мой webView в любом случае заблокирован.Поэтому я должен всегда сохранять ширину моего webView равной self.view.frame.size.width в зависимости от ориентации устройства, и ширина webView должна меняться, чтобы соответствовать содержимому.Соответственно, я установил scrollView contentSize, чтобы разрешить вертикальную прокрутку.

Но дело в том, что метод self.webView sizeThatFits возвращает странные значения, и происходит то, что, когда мой screenWidth равен 320, я получаю fitSize.width как 408, и мой контент уходит с экрана горизонтально, и я не могучтобы показать содержание правильно.Даже если я принудительно установлю рамку self.webView.frame.size.width = screenWidth, часть контента останется за кадром.

Как справиться с этой ситуацией?

Ответы [ 2 ]

3 голосов
/ 06 мая 2011

В соответствии с документами, размер для размещения:

Изменяет размеры и перемещает представление приемника, чтобы оно просто охватывало подпредставлений .

Это не дает вам никакой информации о встраивании веб-вида в его содержащий представление.Возможно ли, что ваш webView пытается отобразить что-то более широкое, чем screenWidth, и, поскольку вы заблокировали прокрутку, он показывает всю ширину?

1 голос
/ 22 июля 2011

У меня также возникла проблема с неправильным размером содержимого UIWebView при переключении с альбомного на портретное.

Пройдя немного охоты, я нашла ответ:

«Один из способов, который я нашел, - это перезагрузить содержимое после изменения размера. Когда я говорю« перезагрузить », я не имею в виду встроенную функцию перезагрузки в UIWebView, я имею в виду фактический вызов loadHTMLString : baseURL: (или какой метод вы используете для начальной загрузки вашего контента). " Сообщение Агента Голда на форуме поддержки Apple

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...