Вот то, что я пытаюсь сделать,
У меня есть веб-представление, кадр которого я устанавливаю как
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, часть контента останется за кадром.
Как справиться с этой ситуацией?