Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 隐藏和取消隐藏选项卡栏时管理图幅_Ios_Swift - Fatal编程技术网

Ios 隐藏和取消隐藏选项卡栏时管理图幅

Ios 隐藏和取消隐藏选项卡栏时管理图幅,ios,swift,Ios,Swift,我有一个UIViewController,它的底部有一个选项卡栏控制器。当用户单击按钮时,我隐藏了选项卡栏。选项卡栏被隐藏,但底部有一个空白。ViewController框架未更改。如何管理?如果tabor控制器隐藏,则viewController高度应增加 func apply(_ effect: ActivityFeedEffect) { switch effect { case .feedTypeChange(mode: let mode): self

我有一个UIViewController,它的底部有一个选项卡栏控制器。当用户单击按钮时,我隐藏了选项卡栏。选项卡栏被隐藏,但底部有一个空白。ViewController框架未更改。如何管理?如果tabor控制器隐藏,则viewController高度应增加

  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
在我的例子中,我在故事板上配置了延伸边缘,使其位于底部栏和不透明栏下(见图)。所以我的视图总是采用孔屏,我不需要调整帧。也许这有帮助

我的结构是选项卡栏->导航控制器->表格视图(在这里我隐藏/显示选项卡栏)