2016-06-15 15 views
0

UIWebViewに設定しても、サイズが小さくなることはなく、サイズが大きくなるだけです。これはいくつかの設定コードです:UIWebView sizeToFit()Small

var scrollView: UIScrollView! 
var webView: UIWebView! 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    scrollView = UIScrollView() 
    scrollView.frame = CGRect(x: 50.0, y: 50.0, width: 800.0, height: 1200.0) 

    webView = UIWebView() 
    webView.frame = CGRect(x: 50.0, y: 50.0, width: 800.0, height: 1.0) 
    webView.scrollView.scrollEnabled = false 
    webView.delegate = self 
    webView.scalesPageToFit = false 
    webView.loadHTMLString("Test", baseURL: nil) 

    self.view.addSubview(scrollView) 
    scrollView.addSubview(webView) 
} 

これは私のテストコードです。これは、他の3秒後、その後、非常に小さい、3秒後に非常に大きくなるために、コンテンツのサイズを変更:HTMLがロードされた後

dispatch_after_delay_main(3) { 

     self.webView.loadHTMLString("Test Test Test Test ", baseURL: nil) 
     // Much longer string abbreviated here 

     dispatch_after_delay_main(3, block: { 

      self.webView.loadHTMLString("Test", baseURL: nil) 

     }) 
    } 

これが呼び出されます。目標は、コンテンツのサイズに基づいてWebViewのサイズを変更することです。注:これは同じサイズの結果を持つ.sizeToFit()とsizeThatFits()の両方で行っています。

func webViewDidFinishLoad(webView: UIWebView) { 

    webView.frame.size.height = 0.0 // Just in case 
    webView.sizeToFit() 

} 

私はwebViewDidFinishLoad(webView: UIWebView)の最後にprint文を省略しましたが、彼らは、出力サイズが成長しているが、減少していません。つまり、成長しますが、一度​​がロードされると、サイズは減少しません。

(800.0, 1.0) // "Test" (before sizeToFit() called) 
(800.0, 1976.0) // "Test Test .... Test " 
(800.0, 1976.0) // "Test" 

答えて

3

scrollviewに埋め込まれたwebviewが必要ですか?私はそうは思わない。

てみ"<div id='main-html'>Your text</div>"にあなたのHTML文字列を変更し、その後、webViewDidFinishLoadデリゲート関数にあなたがこれらのことを行います:、

var result : Float = NSString (webView.stringByEvaluatingJavaScriptFromString("document.getElementById('main-html').offsetHeight").floatValue

2番目の変更を:

まず、あなたがコンテンツの高さを取得しますWebviewの高さと結果の値。

同じ結果値を使用してwebView.scrollView.contentSizeの高さを変更しようとします。最後に

webView.sizeToFit()

乾杯

にEDIT使用:あなたが使用することができ、言ったように

を:

func webViewDidFinishLoad(webView: UIWebView) { 

    webView.frame.size.height = 1.0 // Value needs to be > 0.0 and < of the current height 
    webView.sizeToFit() 

} 
+0

は、はい、この時点で要件を行います私はそれを埋め込む必要があります。私はそれの下にwebViewと非常に大きなヘッダー(UIView)があります。小さなデバイスでは、ユーザーがWebViewの情報を表示する唯一の方法は、headerとwebViewを同じscrollViewに埋め込むことです。 –

+0

これで問題は見つかりました。問題はwebView.frame.size.height = 0.0を使用していたことにあります。なぜなら何らかの理由でwebViewのサイズを小さくすることができないからです。 1.0を使うと(あるいは0.0以外の何かを仮定しています)、うまく動作します! :)答えを編集したい、あるいはその情報で2番目のものを投稿したいのであれば、私はそれを受け入れます –

+0

しかし、 'webView.frame.size.height = 1.0'を使うだけで問題は解決しましたか? –

関連する問題