2015-03-31 101 views
0

我有一个TableViewController并在它我创建一个UIView编程即状态栏的宽度和高度,并且具有一个彩色背景。基本上,它作为状态栏的背景:添加一个UIView到TableViewControllers查看

let statusBarBG = UIView(frame: CGRectMake(0, 0, widthOfScreen, 20)) 
statusBarBG.backgroundColor = UIColor... 
self.view.addSubView(statusBarBG) 

然而,当我拖动表上下这个状态栏背景与整个表视图移动时,所看到的如下图(左边是如何它通常看起来,红色的更大的部分是我的导航栏的BG):

enter image description here

所以我的问题是:如何创建这个tableViewController这更像是一个兄弟给的tableView,而不是内部的视图一个随它移动的孩子?谢谢。

回答

3

如何在这个tableViewController里面创建一个更像tableView的同级的视图,而不是像它一起移动的孩子?

不幸的是,对于tableviewcontroller,这是不可能的,因为tableviewcontroller的视图是UITableView实例,而UITableView实例又是UIScrollView的子类。基本上,您作为scrollview的子项放入的任何内容都会随之滚动。

一种更好的方法是从使用tableviewcontroller移开,并使用正常的视图控制器具有嵌入的表视图来代替。您甚至可以通过将其添加到层次结构来重用您的视图控制器。

另一(更容易)的方法是处理的UITableView的滚动委托方法,并根据该偏移调整页眉视图的Y位置。

+0

有意义。我的程序不停,当我试图嵌入里面的ViewController一个UITableView由于某种原因(尽管我拖着委托和数据源到控制器)崩溃,但我必须明白这一点。我会试一试,谢谢。 – 2015-03-31 23:06:51

1

你可以只使用一个图像,如果你只需要那些为了像背景颜色。

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar.png"] forBarMetrics:UIBarMetricsDefault]; 

,或者如果你想只是一种颜色,而不是自定义图像使用imageWithColor ...在你的照片,它看起来像你想整个导航栏+状态栏正当红的......所以这个代码是为整个导航栏+状态栏...如果你想在状态栏不同的只是设计的图像,并使用该代码......我不是一个人迅速抱歉,但它应该是非常相似......

编辑:啊你不使用导航控制器中的tableView?那么它可能无法正常工作......

编辑2:

这是我的形象 enter image description here

与此代码

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar.png"] forBarMetrics:UIBarMetricsDefault]; 

我得到

enter image description here

没有它的理由t clean

enter image description here

+0

我改变了我的TableViewController到一个普通的ViewController,详见maranas的答案,并创建了一个UIView作为状态栏的背景,它一切正常。但是,您的方法可能是更好的选择,因为是的,我的视图嵌入在NavigationController中。与此相关的问题是导航栏没有伸展到页面的顶部,状态栏上方,所以顶部的矩形是白色的(无色)。设置其图像是否允许我到达该区域,而不是仅设置背景颜色? – 2015-04-01 01:26:06

+0

我只设置了一个图像(请参阅我的代码),是的它覆盖了所有,导航栏和上面的stauts栏...以及这是iOS7和iOS8 ..不知道,但我认为苹果改变了一些东西与导航栏和iOS7中的状态栏相比,iOS6 – Kreuzberg 2015-04-01 02:17:44

+1

ps但是我学到的是,使用tableviewcontroller是愚蠢而无用的,因为你不能改变任何东西,如果你在桌面视图的按钮上附加一个广告横幅,你不能调整表格的大小以便为广告横幅和最后一行留出空间的表格在广告横幅下,并且不可触摸......这只是一个例子,所以拥有普通的视图控制器总是比较好,并且只需使用tableview控制器即可放置一个表格......只是我的体验... – Kreuzberg 2015-04-01 02:35:50