我在使用隐藏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),然后单击可查看的内容区域,则会显示UIWeBrowserView
视图,其高度为271。单击标签栏空间所在的区域显示_UIWebViewScrollView
,高度为320。在代码中,我可以看到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 +项目。
接下来我该怎么办?提前感谢任何指针!
答案 0 :(得分:0)
这就是Tabbars假设工作的方式,UIView唯一可以覆盖标签bors的形式是模态视图presentviewcontroller .... dismissviewcontroller Apple有很多样本只是搜索它。