2011-04-23 2 views
27

크기가 작아서 (50x70 크기라고 가정 해 봅시다) UIWebView를 내 viewDidLoad 메서드에 생성하고 있습니다. 그리고 나서 슈퍼 UIView에 넣습니다.iPhone - 자동 크기 조정 UIWebView 콘텐츠가 프레임에 맞지 않습니다.

콘텐츠를 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의 프레임보다 더 큰 것으로 스케일 된 것처럼 보입니다. 나는 전체의 superview의 크기로 웹보기의 프레임 크기를 설정하면

enter image description here

은 괜찮아요.
"감소 된"UIWebView의 프레임에 맞춰 웹 콘텐츠 (실제 www 콘텐츠)를 강제로 어떻게 적용 할 수 있습니까?

+0

와 같은를 달성? 스크린 샷을 게시 할 수 있습니까? 처음에 웹 뷰의 프레임을 슈퍼 뷰 중 하나로 설정하면 크기가 좋아 보입니까? –

+0

@Nick Weaver : 여기 있습니다 – Oliver

+0

문제를 설명하는 답변이 추가되었습니다. –

답변

43

답변은 다음과 같습니다. 이미이 작업을 수행하고 있지만 제한이 있습니다. 다음에 스크린

보면 :

Screeshot 1 scalesPageToFit YES와 NO

웹뷰 모두 동일한 폭을 갖는다. 하단의 페이지는 완벽하게 맞습니다.

enter image description here

Screeshot 2, scalesPageToFit 모두 YES하지만 작은 폭

모두 웹보기 페이지에 맞게 시도을 설정하지만 크기 제한이되지 않습니다.

enter image description here

+0

콘텐츠를 촬영하고 그래픽으로 크기를 조정 한 다음 표시 할 수 있습니까? – Oliver

+0

네, 할 수 있어요. [UIWebView의 스크린 샷에서 UIImage를 얻는 법] (http://iphone.syuhari.jp/2010/08/17/how-to-get-the-imimage)을보십시오. - –

0

당신은 다음을 수행 할 수 있습니다보기가 성장함에 따라보기의 내용이 증가 할 것

oneview.contentMode = UIViewContentModeScaleAspectFit; 

. 콘텐츠는 UIWebView 내에서 왜곡없이 피팅하면서 최대한 커집니다.

이 속성에 대한 다른 옵션이 있습니다, 당신은 자동 크기는 것입니다 설정 마스크하는 View Programming Guide for iOS

주에 각각의 효과를 보여주는 사진과 함께, 더 복잡한 것들의 아주 좋은 설명을 찾을 수 있습니다 슈퍼 뷰가 커질 때만 뷰 자체가 커지게하십시오. 작은 UIWebView가 생성되고 self.view가 커지지 않을 때 self.view가 이미 크면 UIWebView가 커지지 않습니다. 당신은 아마 이것에 대해서 알고있을 것입니다. 그러나이 코드 스 니펫에서 self.view의 프레임을 볼 수 없기 때문에 이것을 추가 할 것입니다.

희망이 있으면 도움이됩니다.

+0

self.view의 프레임은 무엇입니까? –

+1

다음과 같이 설정할 수있는 UIWebView 속성이 있습니다. oneView.scalesPageToFit = YES –

+0

내 질문에 ... – Oliver

-48

이 시도 :

[oneView setScalesPageToFit:YES]; 

을 ... 대신 : 도움이

oneView.scalesPageToFit = YES; 

희망을.같은 문제에 직면하는 사람들을 위해

+11

이것은 정확히 같은 것입니다 – Accatyyc

+0

그들은 동일합니다 : D –

+0

이것들은 동일합니다 – Orbitus007

2

, 당신은

self.webView.scrollView.scrollEnabled = NO; 

으로있는 UIWebView 기본 스크롤을 끄고 스크롤 대신 webView의 기본 스크롤의 확대 처리 할 별도의 scrollView를 추가 할 수 있습니다. 다음

- (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 프레임을 설정하는기구. 희망이 있으면 도움이됩니다. 좋은 코딩!

0

스위프트 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) 
2

와 같은을 달성했다. 당신은 addSubview 하나와 loadRequest 라인을 전환 할 수 스위프트 3

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]; 
0

, 나는

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) 
       } 
      }