我想在我的项目中添加第6个标签栏。当我为此尝试时,我会获得更多选项但是当我点击更多标签时没有任何反应。为我提供良好的解决方案以及任何其他逻辑。
答案 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)
您可以在此处使用自定义标签栏:http://cocoacontrols.com/platforms/ios/controls/infinitabbar
甚至这个: http://cocoacontrols.com/platforms/ios/controls/ciexpandabletabbar
答案 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])
}
}