2014-10-07 117 views
0

我是iOS开发新手,所以请原谅无知。iOS - 填充可用垂直空间

我有2次,一个UIWebView和含有控制用于导航在web视图加载的页另一个视图(如下所示)。

控制栏有时隐藏,我希望UIWebView动态填充可用空间,无论控制栏是显示还是隐藏。

我怎样才能做到这一点,什么是首选的方式(自动布局,程序等)?

enter image description here

+0

你在代码中创建或在故事板或XIB看法? – 2014-10-07 19:32:39

+0

在故事板中。 – Steve 2014-10-08 13:50:37

回答

1

我假设你在你的故事板使用自动布局。你应该对Web视图7个约束和工具栏:

constraints

这些约束针顶部,左侧,在网络上查看到根视图的右边缘;工具栏的左边,底部和右边到根视图;和Web视图的底部边缘到工具栏的顶部边缘。

你需要一个出口在您的视图控制器连接到底层约束工具栏(在屏幕截图高亮约束)上:

outlet to toolbar bottom constraint

这个约束的常量在默认情况下,该引脚零工具栏的底部边缘到根视图的底部。要隐藏工具栏,请将约束的常量设置为工具栏的高度。你可能想制作动画:

- (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]; 
    }]; 
} 
0

你可以有几种方法做到这一点;最好的方法是与你之前在项目中使用的任何编码实践相结合。

你可以改变在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以更改底部内容填充。