在我的应用中,我正在使用UITabBarController。这就是IB中的样子:
TabBarController用作窗口的rootViewController。
这是我的代码,我在其中填充了带有views的TabBarController:
tabBar = [[UITabBarController alloc]init];
myViewController1 = [[MyViewController1 alloc] initWithNibName:@"View1" bundle:nil];
myViewController2 = [[MyViewController2 alloc] initWithNibName:@"View2" bundle:nil];
myViewController3 = [[MyViewController3 alloc] initWithNibName:@"View3" bundle:nil];
tabBar.viewControllers = [NSArray arrayWithObjects: myViewController1, myViewController2, myViewController3, nil];
[self.view addSubview:tabBar.view];
如果某些视图显示在TabBarController中,它位于TabBar下(此视图的高度为红线) - 所以如果我有一些TableView,我就看不到最后一行或两行。如何在TabBarController中显示视图(如绿色矩形) - 不在标签栏下?
我认为它可以自动完成,如果我在使用UITabBarController时显示某些东西,它会显示在里面。
答案 0 :(得分:3)
由于iOS7大多数导航项目(包括标签栏)都是半透明的。通过这种方法,用户可以看到,例如,在UITableView中滚动单元格。
有两种方法可以解决您的问题:
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
self.edgesForExtendedLayout = UIRectEdgeNone;
但从我的观点来看,最好的方法是使用AutoLayout和
您可以通过编程方式执行此操作:
[view setTranslatesAutoresizingMaskIntoConstraints: NO];
id topGuide = myViewController.topLayoutGuide;
NSDictionary *viewsDictionary = NSDictionaryOfVariableBindings (view, topGuide);
[myViewController.view addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat: @"V:[topGuide]-[view]"
options: 0
metrics: nil
views: viewsDictionary]
];
或使用故事板:
答案 1 :(得分:1)
这对我有用
class TabBarController: UITabBarController {
override func viewDidLoad() {
super.viewDidLoad()
// this will force child controller's view to be above Tab Bar
tabBar.isTranslucent = false
}