我们可以在ios sdk中添加五个以上的标签栏吗?

Nis*_*shi 3 uitabbarcontroller uitabbar ios

我想在我的项目中添加第6个标签栏.当我为此尝试时,我会获得更多选项,但是当我点击更多选项卡时,没有任何反应.为我提供这个以及任何其他逻辑的良好解决方案.

rge*_*rge 6

从iOS 9(可能还有8个)开始,有一种简单的方法可以做到这一点.我不建议使用这个技巧运送应用程序 - 六个标签在4s或5上相当狭窄 - 但它很好知道.

请注意,iPad标签栏可以有五个以上的标签,没有"更多"项目.

Apple决定"平板电脑与否"的新方式?是大小等级.

所以,子类UITabBarController和实现:

-(UITraitCollection *)traitCollection
{
  UITraitCollection
  *realTraits = [super traitCollection],
  *lieTrait = [UITraitCollection traitCollectionWithHorizontalSizeClass:UIUserInterfaceSizeClassRegular];
  return [UITraitCollection traitCollectionWithTraitsFromCollections:@[realTraits, lieTrait]];
}
Run Code Online (Sandbox Code Playgroud)

添加六个子视图控制器,瞧!在这种情况下,看起来苹果实践了他们所宣扬的内容!

(*请注意,这也将取决于选项卡中视图控制器的水平尺寸类.您可能希望- setOverrideTraitCollection:forChildViewController:在适当的时候调用,可能是覆盖setViewControllers:,以"覆盖"他们的特征集合回到真实的集合.这样他们就不会感到困惑,并试图展示其布局的不适当的广泛变体.)


Sho*_*aib 6

快速子类化UITabBarController并实现:

override var traitCollection: UITraitCollection {
    let realTraits = super.traitCollection
    let lieTrait = UITraitCollection.init(horizontalSizeClass: .regular)
    return UITraitCollection(traitsFrom: [realTraits, lieTrait])
}
Run Code Online (Sandbox Code Playgroud)