yüksekliğini almak I (onların NSLayoutConstraint
s ile) aşağıdaki hiyerarşiyi olan bir UIViewController
var:UIScrollView contentView
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
}
konu CGRectGetHeight(self.contentView.frame)
istenilen yüksekliğe alır olmamasıdır. Herhangi bir fikir?
Bu nedenle, HTML UIWebView'a yüklendikten sonra, görünümün kısıtlamaları ile yüksekliği almak istiyorum.
Teşekkürler ama elde etmek istediğim şey, UIView-ContentView (UIScrollview ve UIScrollVIew'in ebeveyne eşit yükseklikte sıfır kenar boşlukları; kodda self.contentView olarak belirtilir) 'nin yüksekliğidir. UIScrollView'un ContentSize yüksekliğini güncellerdim. –