我们可以在ios sdk中添加五个以上的选项卡栏吗?

我们可以在ios sdk中添加五个以上的选项卡栏吗?,ios,uitabbarcontroller,uitabbar,Ios,Uitabbarcontroller,Uitabbar,我想在我的项目中添加第六个选项卡栏。当我尝试添加时,我会获得更多选项,但当我单击更多选项卡时,什么都不会发生。为我提供关于此逻辑和其他逻辑的良好解决方案。您可以从此处使用自定义选项卡栏: 甚至这个: 从iOS 9(可能还有8)开始,有一种简单的方法可以做到这一点。我不建议使用这个技巧来发布应用程序——在4s或5上,六个标签非常狭窄——但知道这一点很简单 请注意,iPad标签栏可以有五个以上的标签,没有“更多”项就可以了 苹果决定“是否使用平板电脑”的新方法是根据大小分类 因此,子类UITabBa

我想在我的项目中添加第六个选项卡栏。当我尝试添加时,我会获得更多选项,但当我单击更多选项卡时,什么都不会发生。为我提供关于此逻辑和其他逻辑的良好解决方案。

您可以从此处使用自定义选项卡栏:

甚至这个:

从iOS 9(可能还有8)开始,有一种简单的方法可以做到这一点。我不建议使用这个技巧来发布应用程序——在4s或5上,六个标签非常狭窄——但知道这一点很简单

请注意,iPad标签栏可以有五个以上的标签,没有“更多”项就可以了

苹果决定“是否使用平板电脑”的新方法是根据大小分类

因此,子类
UITabBarController
并实现:

-(UITraitCollection *)traitCollection
{
  UITraitCollection
  *realTraits = [super traitCollection],
  *lieTrait = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];
  return [UITraitCollection traitCollectionWithTraitsFromCollections:@[realTraits, lieTrait]];
}
override var traitCollection: UITraitCollection {
    let realTraits = super.traitCollection
    let lieTrait = UITraitCollection.init(horizontalSizeClass: .regular)
    return UITraitCollection(traitsFrom: [realTraits, lieTrait])
}
添加六个子视图控制器,瞧!在这种情况下,苹果似乎在实践他们所宣扬的东西

(*请注意,这也与选项卡中视图控制器的水平大小类有关。您可能希望在适当的时候调用
-setOverrideTraitCollection:forChildViewController:
,可能是在
setViewController:
的覆盖中调用“覆盖”他们的特征集合回到了真实的集合。这样他们就不会感到困惑,也不会试图显示布局的不适当的广泛变体。)

[编辑以稍后添加:
从iOS 12左右开始,这个技巧有一个有趣的副作用:对于5个或更少的选项卡,它将选项卡栏变成iPad风格,标题位于图标的右侧。]

在swift中,子类
UITabBarController
并实现:

-(UITraitCollection *)traitCollection
{
  UITraitCollection
  *realTraits = [super traitCollection],
  *lieTrait = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];
  return [UITraitCollection traitCollectionWithTraitsFromCollections:@[realTraits, lieTrait]];
}
override var traitCollection: UITraitCollection {
    let realTraits = super.traitCollection
    let lieTrait = UITraitCollection.init(horizontalSizeClass: .regular)
    return UITraitCollection(traitsFrom: [realTraits, lieTrait])
}

使CustomTabBarVC从UITabBarController继承它,并实现以下操作,这将使您能够做到这一点

import UIKit

class CustomTabBarVC: UITabBarController {

    override func viewDidLoad() {
        super.viewDidLoad()

    }

    override var traitCollection: UITraitCollection {
        let realTraits = super.traitCollection
        let fakeTraits = UITraitCollection(horizontalSizeClass: .regular)
        return UITraitCollection(traitsFrom: [realTraits, fakeTraits])
    }
}

请在您的代表中提供相关代码,否则很难说是什么导致了……k。请告诉我,我们可以在ios sdk中添加6个选项卡栏。正确的……您可以有6个或更多选项卡,但在这种情况下,只有四个选项卡将显示其图标,第五个选项卡将是标准的“更多…”选项卡,它将引导您到其他选项卡的单独列表控制器。答案本身似乎非常有效。但并非所有情况下都如此。例如,在使用AvPlayServiceWController时,它似乎特别弄乱了UITabBarController的纵向/横向方向。我正在用swift开发一个面向景观的IPad应用程序,该解决方案不适用于Meth。该解决方案根本不会影响IPad。iPad已经是普通的了。UITabBarController可能对选项卡的数量有另一个上限;如果你需要更多,你可以考虑只使用一排按钮。我正在开发一个iPad应用程序,它对我来说没有用,有什么建议吗?