Ios 我可以让UIAbbarController调整其选项卡的大小吗';视图控制器是否根据其自身的布局指南(非IB)?
(注意:这个问题是关于在不使用界面生成器的情况下开发iOS的问题。) 苹果公司有一份声明说: 使用不透明UINavigationController或uitabarcontroller的应用程序会自动将其内容保持在状态栏下方 当我看到这一点时,我认为这意味着当作为整个应用程序的根视图控制器使用时,UITabBarController将自动调整其选项卡视图控制器的大小,以便它们不会扩展到状态栏下 但是,如果在AppDelegate中使用下面的代码创建一个空项目,则表明情况并非如此。状态栏下的区域以红色或蓝色结束,这取决于您所在的选项卡,而不是作为基本窗口背景色的白色Ios 我可以让UIAbbarController调整其选项卡的大小吗';视图控制器是否根据其自身的布局指南(非IB)?,ios,swift,cocoa-touch,uikit,uitabbarcontroller,Ios,Swift,Cocoa Touch,Uikit,Uitabbarcontroller,(注意:这个问题是关于在不使用界面生成器的情况下开发iOS的问题。) 苹果公司有一份声明说: 使用不透明UINavigationController或uitabarcontroller的应用程序会自动将其内容保持在状态栏下方 当我看到这一点时,我认为这意味着当作为整个应用程序的根视图控制器使用时,UITabBarController将自动调整其选项卡视图控制器的大小,以便它们不会扩展到状态栏下 但是,如果在AppDelegate中使用下面的代码创建一个空项目,则表明情况并非如此。状态栏下的区域以
func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
window = UIWindow(frame: UIScreen.mainScreen().bounds)
let vc1 = UIViewController()
vc1.view.backgroundColor = UIColor.redColor()
vc1.tabBarItem = UITabBarItem(tabBarSystemItem: .Bookmarks, tag: 1)
let vc2 = UIViewController()
vc2.view.backgroundColor = UIColor.blueColor()
vc2.tabBarItem = UITabBarItem(tabBarSystemItem: .Favorites, tag: 2)
let tbc = UITabBarController()
tbc.viewControllers = [vc1, vc2]
window!.rootViewController = tbc
window!.backgroundColor = UIColor.whiteColor()
window!.makeKeyAndVisible()
return true
}
UITabBarController有一个topLayoutGuide,我可以使用它添加显式约束,使内容保持在状态栏下方。大概涉及这些指南的东西(而不是硬编码某个地方的偏移量为20)将是“正确的方式”。然而,在我的现实生活中,vc1和vc2应该是UITableViewController,因此我能看到的唯一方法是:
更新:这比文档提供了更多的细节,并解释了我看到的行为。然而,我仍然没有看到一个好的解决方案。我不能插入最外层的视图控制器来保存所有内容,因为UITabBarController的文档中说,您不应该将其作为另一个视图控制器的子视图-它需要是根视图控制器。我怀疑博客第8点中描述的contentInset行为是为了给我真正需要的东西,即UITableView内容的顶部从状态栏下方开始。如果苹果想让我允许内容在状态栏下滚动,我想这没问题。然而,目前我的表格视图的顶部是从状态栏文本开始的,这显然是错误的。可能是什么原因阻止了contentInset调整的工作。我将其放在viewDidLoad方法中,以防止UITAbleView内容加载到选项卡栏下方。在我的例子中,选项卡栏位于顶部,我必须迭代以找到偏移量: self.tableView.contentInset=UIEdgeInsetsMake(70,0,0,0) 一般用例是:
self.tableView.contentInset=UIEdgeInsetsMake(,)感谢您的回复,但这对我来说似乎是一种攻击。我觉得我不应该硬编码系统代表我设置的标签栏大小之类的东西——这似乎不适合未来。由于您的问题是选项卡栏而不是状态栏,因此使用我在上两次更新中提到的edgesForExtendedLayout属性可能可以更好地解决问题。