【发布时间】:2014-12-13 08:17:54
【问题描述】:
我无法使用隐藏 UITabBar 留下的空间。
我有一个带有 UINavigationController 的 UITabBarController,它的根视图控制器只有一个 UIWebView。当我隐藏导航/状态栏时,我正在使用自动布局约束使 webview 填充工作正常的视图(并填充可用空间)。
但是,当我隐藏标签栏(使用setNavigationBarHidden)时,标签栏被隐藏,但它腾出的空间没有被 webview 用完,正如预期的那样。
搜索类似问题建议在推送视图之前使用hidesBottomBarWhenPushed。我不想在旋转设备时推动另一个 VC(或必须重新加载 webview)。其他人建议调整框架的大小(如 https://stackoverflow.com/a/1554637/1429412 ),但我无法成功地做到这一点。
在一个方向隐藏标签栏而不是另一个方向并让视图填充标签栏腾出的空间的最佳方法是什么?
纵向屏幕截图,在状态/导航栏和标签栏后面显示绿色背景的 UIWebview:http://i.stack.imgur.com/Hzj9k.png
显示隐藏状态/导航栏和标签栏的横向屏幕截图。 webview 内容已扩展到顶部(导航栏),但没有扩展到底部(标签栏)。然而,webview 本身(唯一具有绿色背景的元素)已经向下扩展,而不是它的内容(不管长度):http://i.stack.imgur.com/sdk75.png
如果我在运行时检查视图(使用 FLEX),然后单击可视内容区域,它会显示具有较短 271 高度的 UIWeBrowserView 视图。单击标签栏空间所在的区域将显示具有完整 320 高度的 _UIWebViewScrollView。在代码中,我可以看到 UIWebView 的 .contentSize 只有 568x271。我尝试了在 webview 及其子视图上设置框架的各种组合,但没有成功。
现在,没有任何调整框架大小的技巧,代码很简单:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[[self navigationController] setNavigationBarHidden:UIInterfaceOrientationIsLandscape(toInterfaceOrientation) animated:YES];
[[UIApplication sharedApplication] setStatusBarHidden:UIInterfaceOrientationIsLandscape(toInterfaceOrientation) withAnimation:UIStatusBarAnimationSlide];
self.tabBarController.tabBar.hidden = UIInterfaceOrientationIsLandscape(toInterfaceOrientation);
}
我将 xCode 6.1 用于 iOS7+ 项目。
接下来我该怎么做?提前感谢您的任何指点!
【问题讨论】:
标签: ios objective-c uiwebview uitabbarcontroller