Ios 隐藏和取消隐藏选项卡栏时管理图幅
我有一个UIViewController,它的底部有一个选项卡栏控制器。当用户单击按钮时,我隐藏了选项卡栏。选项卡栏被隐藏,但底部有一个空白。ViewController框架未更改。如何管理?如果tabor控制器隐藏,则viewController高度应增加Ios 隐藏和取消隐藏选项卡栏时管理图幅,ios,swift,Ios,Swift,我有一个UIViewController,它的底部有一个选项卡栏控制器。当用户单击按钮时,我隐藏了选项卡栏。选项卡栏被隐藏,但底部有一个空白。ViewController框架未更改。如何管理?如果tabor控制器隐藏,则viewController高度应增加 func apply(_ effect: ActivityFeedEffect) { switch effect { case .feedTypeChange(mode: let mode): self
func apply(_ effect: ActivityFeedEffect) {
switch effect {
case .feedTypeChange(mode: let mode):
self.parent?.tabBarController?.tabBar.isHidden = mode == .hidden
}
}
这是UITabBarController上的一个扩展,您可以使用它 这基本上会更新视图的帧。 如果需要,可以根据用例添加动画和其他帧处理。但这是可以引导你朝这个方向前进的东西
extension UITabBarController {
func hideTabBar(isHidden:Bool) {
if (isTabBarAlreadyHidden() == isHidden) { return }
let frame = self.tabBar.frame
let height = frame.size.height
let offsetY = (isHidden ? -height : height)
self.tabBar.frame.offsetBy(dx:0, dy:offsetY)
self.view.frame = CGRect(x:0,y:0,width: self.view.frame.width, height: self.view.frame.height + offsetY)
self.view.setNeedsDisplay()
self.view.layoutIfNeeded()
}
func isTabBarAlreadyHidden() ->Bool {
return self.tabBar.frame.origin.y < UIScreen.main.bounds.height
}
}
扩展控制器{
func hideTabBar(isHidden:Bool){
如果(isTabBarAlreadyHidden()==isHidden){return}
设frame=self.tabBar.frame
let height=frame.size.height
让偏移量=(isHidden?-高度:高度)
self.tabBar.frame.offsetBy(dx:0,dy:offsetY)
self.view.frame=CGRect(x:0,y:0,宽度:self.view.frame.width,高度:self.view.frame.height+offsetY)
self.view.setNeedsDisplay()
self.view.layoutifneed()
}
func isTabBarAlreadyHidden()->Bool{
返回self.tabBar.frame.origin.y
在我的例子中,我在故事板上配置了延伸边缘,使其位于底部栏和不透明栏下(见图)。所以我的视图总是采用孔屏,我不需要调整帧。也许这有帮助
我的结构是选项卡栏->导航控制器->表格视图(在这里我隐藏/显示选项卡栏)