隐藏标签栏上的覆盖按钮

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)
    

【讨论】:

以上是关于隐藏标签栏上的覆盖按钮的主要内容,如果未能解决你的问题,请参考以下文章

标签栏上的 UIButton

分段按钮未显示在 iPhone 的导航栏上

标签栏项目图像高于标签栏上的其他图像

除掉任务栏上的隐藏小按钮

反应导航5从堆栈导航器中隐藏标签栏

PhoneGap - 隐藏标签栏页面开关上的后退按钮