を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"
は、はい、この時点で要件を行います私はそれを埋め込む必要があります。私はそれの下にwebViewと非常に大きなヘッダー(UIView)があります。小さなデバイスでは、ユーザーがWebViewの情報を表示する唯一の方法は、headerとwebViewを同じscrollViewに埋め込むことです。 –
これで問題は見つかりました。問題はwebView.frame.size.height = 0.0を使用していたことにあります。なぜなら何らかの理由でwebViewのサイズを小さくすることができないからです。 1.0を使うと(あるいは0.0以外の何かを仮定しています)、うまく動作します! :)答えを編集したい、あるいはその情報で2番目のものを投稿したいのであれば、私はそれを受け入れます –
しかし、 'webView.frame.size.height = 1.0'を使うだけで問題は解決しましたか? –