【问题标题】:Change tabBar height in Swift 5 for IOS 13在 Swift 5 中为 IOS 13 更改 tabBar 高度
【发布时间】:2020-01-24 11:46:35
【问题描述】:

我需要将UITabBar 的高度更改为 95。我可以在旧版本的 iOS Swift 中做到这一点。这是我在旧版本中工作的代码。

override func viewWillLayoutSubviews() {
    super.viewWillLayoutSubviews()

    tabBar.frame.size.height = 95
    tabBar.frame.origin.y = view.frame.height - 95

    menuButton.frame.origin.y = self.view.bounds.height - tabBar.frame.size.height - 10
    shadowBtn.frame.origin.y = self.view.bounds.height - tabBar.frame.size.height - 15
}

【问题讨论】:

    标签: ios swift uitabbarcontroller ios13 swift5


    【解决方案1】:

    我正在使用以下方法

    extension UIWindow {
        static var key: UIWindow? {
            if #available(iOS 13, *) {
                return UIApplication.shared.windows.first { $0.isKeyWindow }
            } else {
                return UIApplication.shared.keyWindow
            }
        }
    }
    
    extension UITabBar {
        override open func sizeThatFits(_ size: CGSize) -> CGSize {
            super.sizeThatFits(size)
            guard let window = UIWindow.key else {
                return super.sizeThatFits(size)
            }
            var sizeThatFits = super.sizeThatFits(size)
            sizeThatFits.height = window.safeAreaInsets.bottom + <# Height #>
            return sizeThatFits
        }
    }
    

    或者如果你不喜欢创建扩展,创建 UITabBar 子类然后重写这个方法。

    当您使用viewWillLayoutSubviewsviewDidLayoutSubviews 更改标签栏的高度时,您忘记了安全区域。您必须通过self.additionalSafeAreaInsets 设置附加的安全区域插入,并且通过在viewDidLayoutSubviewsviewWillLayoutSubview 中这样做,标签栏将向上移动(因为您添加了额外的插入)。如果您不关心自动布局和安全区域,那么您可以使用 viewWillLayoutSubviewsviewDidLayoutSubviews

    【讨论】:

      【解决方案2】:

      viewDidLayoutSubviews

      中试试
      override func viewDidLayoutSubviews() {
          super.viewDidLayoutSubviews()
          tabBar.frame.size.height = 95
          tabBar.frame.origin.y = view.frame.height - 95
      }
      

      【讨论】:

      • 你好……这段代码是正确的,但是当我想隐藏标签栏时,当我推送到另一个视图控制器时,标签栏会延迟隐藏……
      • @kuldeep,我看起来在 iPhone X 设备上是有线的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-22
      • 1970-01-01
      • 2015-11-15
      • 2011-12-07
      • 2023-03-24
      • 2015-09-24
      • 1970-01-01
      相关资源
      最近更新 更多