gpt4 book ai didi

ios - 如何防止 UITabBarController 更新 subview ?

转载 作者:行者123 更新时间:2023-11-29 05:57:25 24 4
gpt4 key购买 nike

在 ContainerView 内部,我有一个 UITabBarController 子类,我在其中修改了 UITabBar Y 位置。我使用以下代码将其移至更靠近顶部的位置,而不是位于底部:

override func viewDidLayoutSubviews() {
tabBar.frame = CGRect(x: 0, y: 0, width: tabBar.frame.size.width, height: tabBar.frame.size.height)
super.viewDidLayoutSubviews()
delegate = self
selectedViewController?.view.frame.origin = CGPoint(x: 0, y: tabBar.frame.size.height)
}

func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
selectedViewController?.view.frame.origin = CGPoint(x: 0, y: tabBar.frame.size.height)
}

它最初工作得很好:第一个选项卡 View 包含一个 UITableView,并且它似乎针对 UITabBar 的新位置调整其框架。但是,如果我将 ViewController 插入堆栈,在插入动画进行到一半时,包含 UITableView 的 View 底部会跳起来,就像 UITabBar 仍然在那里一样。因此, View 顶部的一部分最终位于 UITabBar 后面,并且在将这个新 ViewController 从堆栈中弹出后返回到 UITabBarController, View (带有 tableView)仍保留在 tabBar 新位置后面的这个位置。我尝试更改 ViewWillAppear、ViewWillDisappear、ViewDidDisappear 中的 View 原点,但这些方法都无法将 View (包含 tableView)的位置重置到 UITabBar 新位置下方。

我不确定是什么导致了这种情况发生,或者需要调查什么生命周期方法。

有什么想法或建议吗?

编辑:TableView 是实际更改其原点的 View ,而不是 View 。

最佳答案

似乎您可能需要将 super.viewDidLayoutSubviews() 调用放在覆盖的顶部。你尝试过吗?我认为父类(super class)方法实际上也会调整位置,因此您的更改可能会被覆盖。

关于ios - 如何防止 UITabBarController 更新 subview ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55013018/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com