隐藏标签栏上的覆盖按钮
Posted
技术标签:
【中文标题】隐藏标签栏上的覆盖按钮【英文标题】:Hiding an overlayed button on a Tab Bar 【发布时间】:2018-06-22 03:46:07 【问题描述】:我是 ios 和 Swift 的新手。我目前正在开发一个应用程序,我需要在其中显示一个带有大按钮的标签栏。鉴于时间限制,我所做的是我在窗口中创建了一个按钮,并以编程方式将其放置在选项卡栏的顶部。现在,当我导航到或离开此屏幕时,我将分别在 viewDidAppear 和 viewDidDisappear 中添加/删除此按钮。这确保了当标签栏消失时,按钮也不会显示,同样,当标签栏显示时,按钮也会添加到顶部。但是,由于添加和删除发生在 viewDidAppear 和 viewDidDisappear 中,因此在呈现和删除按钮时会有轻微的延迟,因此会看到短暂的 flickr。在 viewWillAppear 和 viewWillDisappear 中做同样的事情根本不起作用。该按钮不显示或隐藏在“意志”方法中。有人可以建议这里可能会出现什么问题吗?提前致谢。我附上了一个屏幕截图,以大致了解它的外观。
【问题讨论】:
您可以尝试隐藏该按钮以停止闪烁效果而不是删除,这不是解决方案,但这也可以,我也看到,当我添加我的 CALayer 类时,加载时间很短 我觉得方法不对,应该在tabbarcontroller的视图中添加按钮 ***.com/a/48293806/6630644 iOS 极客,感谢您的回复。我们也尝试过隐藏,但结果相同。它会导致瞬间闪烁。我最好的猜测是因为标签栏分别在 viewWillAppear 和 viewWillDisappear 方法中被渲染或删除。但是,由于我们在 viewDidAppear / viewDidDisappear 中隐藏/显示按钮,因此会导致相对于选项卡的暂时滞后。 SPatel,感谢您的参考,我也会检查这些。然而,最初我们开始将视图添加为标签栏本身的子视图。但是当我们导航到另一个屏幕时,我们遇到了按钮仍然可见的问题。 【参考方案1】:添加按钮的正确方法是在 UItabBarController 的视图中添加它,而不是在 UIWindow 中添加
class DashBoardViewController: UITabBarController
let button:UIButton =
let view = UIButton(frame: .zero)
view.backgroundColor = .blue
return view
()
override func viewDidLoad()
super.viewDidLoad()
initView()
override func viewDidLayoutSubviews()
super.viewDidLayoutSubviews()
button.center = tabBar.center
private func initView()
button.center = tabBar.center
view.addSubview(button)
【讨论】:
以上是关于隐藏标签栏上的覆盖按钮的主要内容,如果未能解决你的问题,请参考以下文章