【问题标题】:How to access tabbar height from other controller in swift?如何快速从其他控制器访问标签栏高度?
【发布时间】:2021-10-18 04:43:49
【问题描述】:

我想从标签栏上方的特定控制器(MyController)附加一个视图,但我的问题是如何从 MyController 计算标签栏的高度,以便我可以将 y 位置指定给我的自定义视图。我正在尝试使用 statusBarFrame 来实现,但它不起作用。如果有人有什么想法,请帮助我。

let timerView = UINib(nibName: "WorkoutTimer", bundle: nil).instantiate(withOwner: nil, options: nil).first as? WorkoutTimer
    let window = UIApplication.shared.windows.last
    if let timerView = timerView {
        let screenSize = UIScreen.main.bounds
        let screenHeight = screenSize.height
        let screenWidth = screenSize.width
        let statusbarHeight = UIApplication.shared.statusBarFrame.height
        let yPosition = screenHeight - ((statusbarHeight) + 50)
        timerView.frame = CGRect(x: 0, y: yPosition, width: screenWidth, height: 50)
        window?.addSubview(timerView)
    }

【问题讨论】:

  • 为什么你没有被 tabBar y 框架。
  • 但是如何从 MyController 访问 tabBar

标签: ios swift xcode uitabbar


【解决方案1】:

直接取tabBarController?.tabBar.frame.origin.y的y位置,加上你的timerview帧高

 if let timerView = timerView {
         let yPosition = self.tabBarController?.tabBar.frame.origin.y - 80
        timerView.frame = CGRect(x: 0, y: yPosition, width: UIScreen.main.bounds.size.width, height: 50)
        window?.addSubview(timerView)
    }

【讨论】:

  • 我应该把第一个代码放在哪里?正如它所说的,当我放入我的 tababar 控制器时,变量在它自己的初始值中使用
  • @AbhayjeetSingh - 我更新了代码,请检查
  • 非常感谢@Anbu.Karthik,但该值应减去 50 而不是 80
  • @AbhayjeetSingh - 选择是 urs,如果你使用 80,它会在 tabBar 和 timerView 之间添加一些空间。如果您不想要空间,请直接使用您的 timerView height(50)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
  • 2018-08-04
  • 2015-02-16
  • 1970-01-01
  • 2020-01-10
相关资源
最近更新 更多