我正在我的viewDidLoad方法中生成一个UIWebView,它的大小很小(让我们说像50x70)。然后我把它变成了超级UIView。
我想让它的内容适合webView框架。为此,我写道:
oneView = [[UIWebView alloc] initWithFrame:CGRectMake(x, y, W, H)];
oneView.backgroundColor = [UIColor whiteColor];
oneView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
oneView.scalesPageToFit = YES;
oneView.autoresizesSubviews = YES;
[self.view addSubview:oneView];
[oneView loadRequest:/*some request*/];
但是这样做,网页不会调整大小到UIWebView的框架。 它似乎被缩放到其他东西,小于superview的框架,并且比webview的框架更宽。
如果我将webview框架大小设置为整个superview的大小,那就没问题了 我如何强制Web内容(真正的www内容)适合“简化的”UIWebView的框架?
答案 0 :(得分:44)
答案是:你已经这样做但是有限制。
请查看以下屏幕截图:
Screeshot 1,scalesPageToFit YES和NO
两个webview都具有相同的宽度。在较低的页面中,页面非常适合。
Screeshot 2,scalesPageToFit均为YES但设置的宽度较小
两个webview都尝试适合页面,但不会因为有大小限制。
答案 1 :(得分:2)
对于那些遇到同样问题的人,可以通过
关闭UIWebView原生滚动self.webView.scrollView.scrollEnabled = NO;
并添加一个单独的scrollView
,它将处理滚动和缩放而不是webView
的原生滚动。
下一步实施
- (void) webViewDidFinishLoad:(UIWebView *)webView
{
CGRect frame = _webView.frame;
CGSize fittingSize = [_webView sizeThatFits:_webView.scrollView.contentSize];
frame.size = fittingSize;
_webView.frame = frame;
self.scrollView.contentSize = self.webView.scrollView.contentSize;
}
设置正确的webView
框架。
希望这有助于某人。好编码!
答案 2 :(得分:2)
试试这个。这对我有用。
NSString *strTemplateHTML = [NSString stringWithFormat:@"<html><head><style>img{max-width:100%%;height:auto !important;width:auto !important;};</style></head><body style='margin:0; padding:0;'>%@</body></html>", @"insert your html content here"];
[webView loadHTMLString:strTemplateHTML baseURL:nil];
答案 3 :(得分:0)
您可以执行以下操作:
oneview.contentMode = UIViewContentModeScaleAspectFit;
这将使您的视图内容随着视图的增长而增长。内容将尽可能大,同时仍然适合UIWebView并且不会失真。
此属性还有其他选项,您可以在View Programming Guide for iOS
中找到更复杂的解释,以及显示每种效果的图片。请注意,您设置的自动调整大小屏幕只会在其超级视图增长时使视图本身增长。如果在创建小UIWebView并且self.view没有增长时self.view已经很大,那么UIWebView将不会增长。您可能已经意识到了这一点,但我是为了以防万一而添加它,因为我们无法在这段代码中看到self.view的框架。
希望这有用。
答案 4 :(得分:0)
Swift 2.2 我用
取得了相同的成绩//Document file url
var docUrl = NSURL(string: "https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwjjwPSnoKfNAhXFRo8KHf6ACGYQFggbMAA&url=http%3A%2F%2Fwww.snee.com%2Fxml%2Fxslt%2Fsample.doc&usg=AFQjCNGG4FxPqcT8RXiIRHcLTu0yYDErdQ&sig2=ejeAlBgIZG5B6W-tS1VrQA&bvm=bv.124272578,d.c2I&cad=rja")
let req = NSURLRequest(URL: docUrl!)
webView.delegate = self
//here is the sole part
webView.scalesPageToFit = true
webView.contentMode = .ScaleAspectFit
webView.loadRequest(req)
答案 5 :(得分:0)
对于Swift 3,我已经实现了与
相同的功能DispatchQueue.main.async {
if let finalURL = URL(string: urlString) {
let request = URLRequest(url: finalURL)
// self.webView.sizeToFit()
self.webView.scalesPageToFit = true
self.webView.contentMode = .scaleAspectFit
self.webView.loadRequest(request)
}
}
答案 6 :(得分:0)
在网络视图中使用sizethatfits()
,可以解决您的问题。
答案 7 :(得分:-50)
试试这个:
[oneView setScalesPageToFit:YES];
...而不是:
oneView.scalesPageToFit = YES;
希望有所帮助。