Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/116.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 UINavigationBar和UINavigationController之间的间隙';内容_Ios_Swift_Uinavigationcontroller - Fatal编程技术网

Ios UINavigationBar和UINavigationController之间的间隙';内容

Ios UINavigationBar和UINavigationController之间的间隙';内容,ios,swift,uinavigationcontroller,Ios,Swift,Uinavigationcontroller,有一个包含的(嵌入式)UINavigationController,可以向上拖动以填充屏幕,我发现了一个奇怪的bug。就在导航控制器覆盖整个屏幕的那一刻,它的主视图调整了大小,该视图和导航栏之间出现了大约20个点的间隙 很明显,这是UINavigationController中的“预期”行为。但是你怎么避开它呢 我花了好几个小时试图找到一个解决方案(甚至读到没有办法绕过这个问题),我找到了一个足够有效的解决方案 在UINavigationController子类中,我添加了以下覆盖: overr

有一个包含的(嵌入式)UINavigationController,可以向上拖动以填充屏幕,我发现了一个奇怪的bug。就在导航控制器覆盖整个屏幕的那一刻,它的主视图调整了大小,该视图和导航栏之间出现了大约20个点的间隙


很明显,这是UINavigationController中的“预期”行为。但是你怎么避开它呢

我花了好几个小时试图找到一个解决方案(甚至读到没有办法绕过这个问题),我找到了一个足够有效的解决方案

在UINavigationController子类中,我添加了以下覆盖:

override public func viewDidLayoutSubviews() {

    super.viewDidLayoutSubviews();

    if self.view.frame.size.height == Screen.height {
        for childVC in childViewControllers {
            childVC.view.frame = CGRectMake(0, navigationBar.frame.size.height, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height - navigationBar.frame.size.height);
        }
    }
}

我认为20像素是由
UIStatusBar
拍摄的。如果使用具有自动布局的xib文件或故事板,则可以将“顶部约束”设置为“顶部布局指南”,以便正确处理20像素的差异


现在略有不同。也许有一些语法上的改变,但这对我来说是成功的!是 啊谢谢@Lukas Kalinski

override public func viewDidLayoutSubviews() {

        super.viewDidLayoutSubviews();

        if self.view.frame.size.height == UIScreen.mainScreen().bounds.height {
            for childVC in childViewControllers {
                childVC.view.frame = CGRectMake(0, navigationBar.frame.size.height, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.height - navigationBar.frame.size.height);
            }
        }
    }

屏幕高度未知。。。未解析标识符的使用。有新的语法吗?