在 TabBar 中将 UIButton 保持在前面

Posted

技术标签:

【中文标题】在 TabBar 中将 UIButton 保持在前面【英文标题】:Keep UIButton in front in TabBar 【发布时间】:2016-12-22 11:00:20 【问题描述】:

我正在继承 UITabBarController 并且我正在尝试在标签栏的中心添加一个按钮。起初它显示得很好:

然后,当我在 TableViewController 中选择一个项目时,它仍然可见:

此外,当我导航回 TableViewController 时,按钮现在出现在标签栏后面:

这是我用来添加按钮的代码:

class PhotoTabBarController: UITabBarController 

override func viewDidLoad() 
    super.viewDidLoad()

    // Do any additional setup after loading the view.
    addPhotoButton()


// ...

func addPhotoButton() 
    let button = UploadButton(frame: CGRect(x: 0, y: 0, width: 60, height: 60))


    // Start of code to center button in the tab bar

    let heightDifference = button.frame.size.height - self.tabBar.frame.size.height;
    // if the height of the center button is less than the height of the tab bar...
    if (heightDifference < 0) 
        // center the button inside the tab bar
        button.center = self.tabBar.center;
     else 

        var center = self.tabBar.center;
        center.y = center.y - heightDifference/2.0 - 5
        button.center = center;
    

    self.view.addSubview(button)
    self.view.bringSubview(toFront: button)


按钮的外观是在draw(_ rect: CGRect) 函数中创建的。

我可以做些什么来使按钮在选择单元格时与标签栏一起隐藏,并在导航回 TableViewController 时被带到前面?

【问题讨论】:

为什么不使用创建一个新窗口并在其中添加按钮? Yry 在 UIApplication.shared.delegate?.window 中添加该按钮 【参考方案1】:

将此按钮添加到 tabBarController.view

self.tabBarController.view.addSubview(button)

【讨论】:

这不起作用,因为这段代码已经在 UITabBarController 内,所以没有 tabBarController 属性 -- self 是 tabBarController。

以上是关于在 TabBar 中将 UIButton 保持在前面的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中将 UIButton 居中?

在 cellForRowAtIndexPath 中将 UIButton 视为 UILabel

如何在 UIToolbar 完成按钮中将焦点从一个 UIButton 设置到另一个 UIButton

如何在 UIButton 中将 UIImageView 与它的文本居中?

无法在 Xamarin C# 中将图像设置为 UIButton

在 Swift 中将多个 UIButton 添加到多个 UIView