ESTabBarController icon indicating copy to clipboard operation
ESTabBarController copied to clipboard

iPad OS18下需要适配,急盼

Open beiguancyc opened this issue 1 year ago • 12 comments

在iPad OS18下外观会发生大变化,同时点击后hidesBottomBarWhenPushed也没有作用了,希望能早日更新,不胜感谢

beiguancyc avatar Sep 20 '24 06:09 beiguancyc

+1

SupenBook avatar Oct 07 '24 14:10 SupenBook

同样碰到问题了,有大神适配下吗?

buginux avatar Oct 12 '24 09:10 buginux

+1

spirej avatar Oct 16 '24 07:10 spirej

iOS 18 ipad的层级改变了 可以自己把tabbar加上去

  • 在ESTabBarController类中
if UIDevice.current.userInterfaceIdiom == .pad {
      if #available(iOS 18.0, *) {
          traitOverrides.horizontalSizeClass = .compact
          view.addSubview(tabBar)
      }
}

涉及旋转的话,使用autolayout布局

feixue299 avatar Oct 18 '24 07:10 feixue299

iOS 18 ipad的层级改变了 可以自己把tabbar加上去

  • 在ESTabBarController类中
if UIDevice.current.userInterfaceIdiom == .pad {
      if #available(iOS 18.0, *) {
          traitOverrides.horizontalSizeClass = .compact
          view.addSubview(tabBar)
      }
}

涉及旋转的话,使用autolayout布局

完美!但是跳转页面的话未隐藏

Ave838 avatar Oct 18 '24 09:10 Ave838

iOS 18 ipad的层级改变了 可以自己把tabbar加上去

  • 在ESTabBarController类中
if UIDevice.current.userInterfaceIdiom == .pad {
      if #available(iOS 18.0, *) {
          traitOverrides.horizontalSizeClass = .compact
          view.addSubview(tabBar)
      }
}

涉及旋转的话,使用autolayout布局

完美!但是跳转页面的话未隐藏

我的结构是Nav+tab,目前没有这个问题,你的应该是tab+nav,我不太确定具体什么情况,如果没有隐藏的话,我感觉可以考虑一下在nav或tab中写一些监听的代码,来监听状态手动实现类似系统的隐藏

feixue299 avatar Oct 21 '24 02:10 feixue299

我是tab套nav,也是tabbar在顶部导航栏了,求适配

Louis-Zeng avatar Oct 23 '24 07:10 Louis-Zeng

我是tab套nav,也是tabbar在顶部导航栏了,求适配

我测试了一下,发现是系统多出来的一个层级没有隐藏

if UIDevice.current.userInterfaceIdiom == .pad {
  if #available(iOS 18.0, *) {
    traitOverrides.horizontalSizeClass = .compact
    
    if let classType = NSClassFromString("_UITabContainerView"), let view = view.subviews.first(where: { $0.isKind(of: classType) }) {
      view.isHidden = true
    }
    
    view.addSubview(tabBar)
  }
}

这样把他隐藏掉就可以了,但是只测试push的情况,隐藏会不会引起其他的情况目前未知

feixue299 avatar Oct 24 '24 07:10 feixue299

我是tab套nav,也是tabbar在顶部导航栏了,求适配

我测试了一下,发现是系统多出来的一个层级没有隐藏

if UIDevice.current.userInterfaceIdiom == .pad {
  if #available(iOS 18.0, *) {
    traitOverrides.horizontalSizeClass = .compact
    
    if let classType = NSClassFromString("_UITabContainerView"), let view = view.subviews.first(where: { $0.isKind(of: classType) }) {
      view.isHidden = true
    }
    
    view.addSubview(tabBar)
  }
}

这样把他隐藏掉就可以了,但是只测试push的情况,隐藏会不会引起其他的情况目前未知

_UITabContainerView涉及私有api吧 审核和后续迭代可能会受到影响

Ave838 avatar Nov 15 '24 07:11 Ave838

iOS 18 ipad的层级改变了 可以自己把tabbar加上去

  • 在ESTabBarController类中
if UIDevice.current.userInterfaceIdiom == .pad {
      if #available(iOS 18.0, *) {
          traitOverrides.horizontalSizeClass = .compact
          view.addSubview(tabBar)
      }
}

涉及旋转的话,使用autolayout布局

原来还需要加 view.addSubview(tabBar), 苹果有点奇葩,但这个解决了我的问题

hupengfei-hinterstellar avatar Nov 27 '24 03:11 hupengfei-hinterstellar

➕1

ruo-love avatar May 26 '25 07:05 ruo-love

// 在iPadOS18下的tab问题
        if UIDevice.current.isPad {
              if #available(iOS 18.0, *) {
                  traitOverrides.horizontalSizeClass = .compact
                  for i in 0..<view.subviews.count {
                      let subV = view.subviews[i]
                      if String(describing: type(of: subV)).contains("TabContainerView") {
                          subV.setValue(self.tabBar, forKey: "tabBar")
                      }
                  }
              }
        }

这么写不影响tabbar的显隐

yukifeng avatar Jun 24 '25 05:06 yukifeng