Как получить доступ к высоте панели вкладок с другого контроллера в swift?

#ios #swift #xcode #uitabbar

Вопрос:

Я хочу прикрепить представление с определенного контроллера (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)
    }
 

Комментарии:

1. почему вы не взяли рамку y панели вкладок.

2. но как бы я получил доступ к панели вкладок из MyController

Ответ №1:

непосредственно перейдите в положение y TabBarController?.TabBar.frame.origin.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)
    }
 

Комментарии:

1. куда бы я поместил первый код? как говорится, переменная используется в своем собственном начальном значении, когда я помещаю в свой контроллер tababar

2. @AbhayjeetSingh — Я обновил код, пожалуйста, проверьте его

3. большое вам спасибо @Anbu.Karthik, но значение должно быть вычтено как 50, а не 80

4. @AbhayjeetSingh — выбор-это urs, если вы использовали 80, добавьте немного пространства между панелью вкладок и просмотром времени. если вам не нужно пространство, используйте высоту просмотра времени(50) напрямую.