我是iOS開發新手,所以請原諒無知。iOS - 填充可用垂直空間
我有2次,一個UIWebView
和含有控制用於導航在web視圖加載的頁另一個視圖(如下所示)。
控制欄有時隱藏,我希望UIWebView
動態填充可用空間,無論控制欄是顯示還是隱藏。
我怎樣才能做到這一點,什麼是首選的方式(自動佈局,程序等)?
我是iOS開發新手,所以請原諒無知。iOS - 填充可用垂直空間
我有2次,一個UIWebView
和含有控制用於導航在web視圖加載的頁另一個視圖(如下所示)。
控制欄有時隱藏,我希望UIWebView
動態填充可用空間,無論控制欄是顯示還是隱藏。
我怎樣才能做到這一點,什麼是首選的方式(自動佈局,程序等)?
我假設你在你的故事板使用自動佈局。你應該對Web視圖7個約束和工具欄:
這些約束針頂部,左側,在網絡上查看到根視圖的右邊緣;工具欄的左邊,底部和右邊到根視圖;和Web視圖的底部邊緣到工具欄的頂部邊緣。
你需要一個出口在您的視圖控制器連接到底層約束工具欄(在屏幕截圖高亮約束)上:
這個約束的常量在默認情況下,該引腳零工具欄的底部邊緣到根視圖的底部。要隱藏工具欄,請將約束的常量設置爲工具欄的高度。你可能想製作動畫:
- (void)hideToolbar {
[UIView animateWithDuration:0.2 animations:^{
self.toolbarBottomConstraint.constant = self.toolbar.frame.size.height;
[self.view layoutIfNeeded];
}];
}
要顯示工具欄,設置約束的不斷回零:
- (void)showToolbar {
[UIView animateWithDuration:0.2 animations:^{
self.toolbarBottomConstraint.constant = 0;
[self.view layoutIfNeeded];
}];
}
你可以有幾種方法做到這一點;最好的方法是與你之前在項目中使用的任何編碼實踐相結合。
你可以改變在layoutSubviews框架:
- (void)layoutSubviews {
CGRect frame = self.webView.frame;
frame.size.height = self.bottomBar.frame.origin.y;
self.webView.frame = frame;
}
你可以添加約束:
- (void)loadView {
[self.webView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[_webView]-[_bottomBar]" options:0 metrics:nil views:NSDictionaryOfVariableBindings(_webView, _bottomBar)]];
}
你可以在故事板添加約束爲好,但我不知道如何做一個gif證明了這一點。如果你已經在使用Storyboard,你也應該只考慮這一點。
如果你動畫底欄的位置,你可能會想保留的網頁視圖的幀大小同步。使用NSLayoutConstraints會自動發生這種情況;或者您可以更新同一個動畫塊中的Web視圖框架。
另一件事,調查將保持網頁的框架查看相同,匹配,它會出現在最大高度。當您顯示並隱藏底部欄時,請調整webView.scrollView.contentInset
以更改底部內容填充。
你在代碼中創建或在故事板或XIB看法? – 2014-10-07 19:32:39
在故事板中。 – Steve 2014-10-08 13:50:37