1
的高度我有一個UIViewController
它具有以下層次結構(與他們NSLayoutConstraint
S):獲得UIScrollView的內容查看
UIView
-UIScrollView
--UIView-ContentView (zero margins to the UIScrollview and equal height to UIScrollVIew's parent; mentioned in the code as self.contentView)
---UIView (fixed height, 0 top margin to Content View)
---UIView (fixed height, 0 top margin to above view)
---UIView (fixed height, 0 top margin to above view)
---UIView (fixed height, 0 top margin to above view)
---UIWebView (fixed height & linked to IBOutlet in the class; gets expanded)
---UILabel (top margin to UIWebView)
---UIView (fixed height, top margin to above label)
---UIView (fixed height, 0 top margin to above view)
---UIView (fixed height, 0 top margin to above view)
---UIView (fixed height, 0 top margin to above view)
---UIButton (fixed height, top margin to above view)
Scenario:
1. On viewDidLoad() I'm adding the HTML text by appending the JavaScript code that returns the height of the UIWebView
2. on UIWebViewDelegate method (shouldStartLoadWithRequest) I'm setting the following things:
- webViewHeight.constant (NSLayoutConstraint, linked from IB)
- self.scrollView.contentSize = CGSizeMake(self.view.frame.width, CGRectGetHeight(self.contentView.frame))
override func viewDidLoad() {
self.webView.scrollView.scrollEnabled = false
let heightHackScript = "<script type='text/javascript'>window.onload = function() { window.location.href = 'ready://' + document.body.offsetHeight; }</script>"
if let cBody:NSData = self.model?.text_content {
self.webView.loadHTMLString(heightHackScript + String(data: cBody, encoding: NSUTF8StringEncoding)!, baseURL: nil)
}
}
func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
let url = request.URL
if navigationType == .Other {
if url?.scheme == "ready" {
webViewHeight.constant = (url?.host?.floatValue)!
self.scrollView.contentSize = CGSizeMake(self.view.frame.width, CGRectGetHeight(self.contentView.frame))
return false
}
}
return true
}
的問題是,CGRectGetHeight(self.contentView.frame)
沒有得到想要的高度。有任何想法嗎?
所以我想在HTML加載到UIWebView之後獲得視圖約束的高度。
謝謝,但我想得到的是'UIView-ContentView(UIScrollview的零邊距和UIScrollVIew的父母的等高度;代碼中提到的self.contentView的總高度)',基於該高度我會更新UIScrollView的高度ContentSize。 –