2012-02-17 106 views
4

我想添加一個乾淨的UIViewController這在我的故事板嵌入導航控制器內的一個UIWebView:如何在沒有導航欄的情況下獲取UIView的高度?

UIWebView *webView =[[UIWebView alloc] initWithFrame:self.view.bounds)]; 
webView.delegate = self; 
[self.view addSubview:webView]; 

的問題是,該self.view.bounds.size.height爲460,這似乎是包括導航欄在內的整個視圖的高度。我可以減去20的self.view.frame.origin.y的值,並得到所需的440的高度,但有沒有更常見的方法來做到這一點?

編輯

請看看我的小代碼示例在這裏:http://uploads.demaweb.dk/WebViewTest.zip

當你向下滾動到UIWebView的底部,該網站的最後一部分沒有顯示,由於webView要高。

[在這裏輸入的形象描述] [1]

+0

是否** [self addSubview:webView]; **實際編譯?它在視圖控制器中嗎? – sch 2012-02-17 15:57:28

回答

2

解決方案

設置在UIWebView中的autoresizingMask解決我的問題:

self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

+0

這對我有效。作爲一個方面說明,我認爲另一種解決方案是在viewWillAppear中設置框架,因爲在viewDidLoad或更早版本中視圖框架不能保證是正確的 – Sam 2012-06-29 14:47:02

0

默認高度爲480,460 - !不高的狀態欄。 44px - 導航欄的高度(您可以訪問高度,因爲它是UIView - navBar.frame.size.height)。所以,你的視圖高度是480-20-44 = 416.你需要從self.view.frame.size.height減去,而不是origin.y

+0

除非它是iphone上的風景。然後它是34px高。 – DHamrick 2012-02-17 15:44:58

+0

@DHamrick,然後初始高度將爲320px :) – beryllium 2012-02-17 15:47:07

0

不用擔心。導航控制器負責調整其管轄下的視圖控制器的view的大小。如果你希望它是例如,你只會覆蓋這個視圖的框架。較小以使其他子視圖適合其超視圖。

0

我還沒有發現比使用topLayoutGuide(和可選bottomLayoutGuide)其他更好的解決方案。

也就是說,將您的視圖控制器的self.view和設置這些限制:

"H:|[view]|" 
"V:[top][view][bottom]" 

哪裏topself.topLayoutGuidebottomself.bottomLayoutGuide

作爲示例,請參閱AutolayoutHelper中的configureViewController:fillWithSubView:方法。

相關問題