这是我想要做的,
我有一个webView,其框架我设置为
self.webView.frame = CGRectMake(0, Y,screenWidth,1);
y坐标是根据动态添加的其他视图的高度计算得出的。
screenWidth设置为320或480,具体取决于设备方向,也可以正常工作。
现在我希望我的webView将其宽度设置为screenWidth并仅调整其高度以适应内容。
内容可以是plainText,我加载为
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)];
}
我放置webView的scrollView可以水平滚动。无论如何,我的webView都是scrollLocked。所以我必须始终保持我的webView宽度与self.view.frame.size.width相同,这取决于设备方向,并且webView宽度应该更改以适合内容。因此我设置scrollView contentSize以允许垂直滚动。
但问题是,self.webView sizeThatFits方法返回奇怪的值,当我的screenWidth为320时,我得到fittingSize.width为408,而我的内容水平离开屏幕,我无法显示内容正确。即使我强行设置self.webView.frame.size.width = screenWidth的框架,部分内容仍然在屏幕外。
如何应对这种情况?
答案 0 :(得分:3)
根据文档,大小适合:
调整并移动接收器视图,使其仅包含 子视图 。
这不会向您提供有关将webView纳入其包含视图的任何信息。 您的webView是否可能尝试显示比screenWidth更宽的内容,并且由于您将其滚动锁定,它是否显示整个宽度?
答案 1 :(得分:1)
我还遇到了从横向切换到纵向时UIWebView内容无法正确调整大小的问题。
在狩猎了一段时间后,我找到了答案:
“我发现处理这个的一种方法是在调整大小后重新加载内容。当我说”重新加载“时,我不是指UIWebView上的内置重载功能,我的意思是对loadHTMLString的实际调用:baseURL :(或者您最初用于加载内容的方法)。“ Agent Gold's post on Apple Support forum