【发布时间】:2011-08-20 08:16:55
【问题描述】:
这就是我想要做的,
我有一个 webView,我将其框架设置为
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)];
}
我放置 webView 的 scrollView 可以水平滚动。无论如何,我的 webView 都是滚动锁定的。所以我必须始终根据设备方向保持我的 webView 宽度与 self.view.frame.size.width 相同,并且 webView 宽度应该改变以适应内容。我相应地将scrollView contentSize 设置为允许垂直滚动。
但问题是,self.webView sizeThatFits 方法返回奇怪的值,发生的情况是,当我的 screenWidth 为 320 时,我得到 FittingSize.width 为 408,我的内容水平离开屏幕,我无法显示内容正确。即使我强行设置了self.webView.frame.size.width = screenWidth的frame,部分内容仍然在屏幕外。
如何处理这种情况?
【问题讨论】: