Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.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 自定义底部栏过渡到Swift中的另一个视图?_Ios_Swift_Swift3_Uinavigationbar_Ios10 - Fatal编程技术网

Ios 自定义底部栏过渡到Swift中的另一个视图?

Ios 自定义底部栏过渡到Swift中的另一个视图?,ios,swift,swift3,uinavigationbar,ios10,Ios,Swift,Swift3,Uinavigationbar,Ios10,所以,我用UIButton做了一个自定义的底部栏。现在我正在尝试复制淡入过渡,因此当您单击底部栏中的一个按钮时,将发送到另一个视图控制器并显示该视图。我设法做到了这一点,但我的导航栏不是自定义的,每当我切换视图时,主视图都会位于导航栏下 我正在使用以下代码: //MARK: Main view func yourFoodGoalAction() -> Bool { print("transition: YourFoodGoal") let nextViewControll

所以,我用UIButton做了一个自定义的底部栏。现在我正在尝试复制淡入过渡,因此当您单击底部栏中的一个按钮时,将发送到另一个视图控制器并显示该视图。我设法做到了这一点,但我的导航栏不是自定义的,每当我切换视图时,主视图都会位于导航栏下

我正在使用以下代码:

//MARK: Main view
func yourFoodGoalAction() -> Bool {
    print("transition: YourFoodGoal")

    let nextViewController = YourFoodGoal()
    let toView = nextViewController.view

    UIView.transition(from: view!, to: toView!, duration: 0.3, options: [.transitionCrossDissolve]) { (true) in
        print("disolve")
        UIView.animate(withDuration: 0.3, animations: {
            self.navigationItem.title = "Your Goal"
        })
    }

    return true
}
并返回视图(反之亦然):


我应该怎么做才能使我的视图在它们之间切换时不会显示在导航栏下?我不想使用容器视图,因为每个视图都是自定义的。一切都是通过编程实现的。

我找到了答案。我认为模式转换是错误的。模态在主视图中全屏显示。我只是在展示新视图时嵌入了导航,并从那里调用了模态:

func todaysMealsAction() {
    let yourFoodVC = YourFoodVC()
    yourFoodVC.modalTransitionStyle = UIModalTransitionStyle.crossDissolve
    let navBarOnModal: UINavigationController = UINavigationController(rootViewController: yourFoodVC)
    self.present(navBarOnModal, animated: false, completion: nil)
}

我找到了答案。我认为模式转换是错误的。模态在主视图中全屏显示。我只是在展示新视图时嵌入了导航,并从那里调用了模态:

func todaysMealsAction() {
    let yourFoodVC = YourFoodVC()
    yourFoodVC.modalTransitionStyle = UIModalTransitionStyle.crossDissolve
    let navBarOnModal: UINavigationController = UINavigationController(rootViewController: yourFoodVC)
    self.present(navBarOnModal, animated: false, completion: nil)
}

您是如何将工具栏添加到应用程序的?因为您应该能够将其作为子视图添加到主窗口中。它应该在工具栏的顶部,是一个通过函数调用的NSObject。它在上面。问题是导航栏仍然存在,但当我更改视图时,我的视图就在它下面。你能添加一些屏幕截图来说明问题吗?刚刚添加了一个。看第三张图片-开始正常,但回到同一张图片,它被替换了。取消导航栏。将自定义导航栏约束到navigationController.tabBar时,您是如何做到的?您是否使用了topLayoutGuide.bottomAnchor?似乎顶部约束已断开。您是如何将工具栏添加到应用程序的?因为您应该能够将其作为子视图添加到主窗口中。它应该在工具栏的顶部,是一个通过函数调用的NSObject。它在上面。问题是导航栏仍然存在,但当我更改视图时,我的视图就在它下面。你能添加一些屏幕截图来说明问题吗?刚刚添加了一个。看第三张图片-开始正常,但回到同一张图片,它被替换了。取消导航栏。将自定义导航栏约束到navigationController.tabBar时,您是如何做到的?您是否使用了topLayoutGuide.bottomAnchor?似乎顶部约束已被打破