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

时间:2012-04-25 10:29:58

标签: ios uitabbarcontroller uitabbar

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

4 个答案:

答案 0 :(得分:6)

从iOS 9(可能还有8个)开始,有一种简单的方法可以做到这一点。我不建议使用这个技巧来运送应用程序 - 在4s或5上有六个标签非常局促 - 但是它很容易知道。

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

Apple确定“平板电脑与否”的新方式?是大小等级。

所以,子类UITabBarController并实现:

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

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

(*请注意,这也与标签中视图控制器的水平尺寸类有关。您可能希望在适当的时候调用- setOverrideTraitCollection:forChildViewController:,可能会覆盖setViewControllers:,将他们的特质集合“覆盖”回真实的集合。这样他们就不会混淆并试图展示其布局的不适当的广泛变体。)

答案 1 :(得分:5)

在swift中,子类UITabBarController并实现:

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

答案 2 :(得分:1)

答案 3 :(得分:0)

使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])
    }
}

enter image description here