将UIView添加到TableViewControllers视图

时间:2015-03-31 22:51:55

标签: ios xcode swift uiview

我有一个TableViewController,在其中我以编程方式创建了一个UIView,它是状态栏的宽度和高度,并具有彩色背景。基本上,它作为状态栏的背景:

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

然而,当我上下拖动桌子时,这个状态栏背景随着整个桌面视图移动,如下图所示(左边是它看起来正常,红色的较大部分是我的导航栏的bg ):

enter image description here

所以我的问题是:如何在这个tableViewController中创建一个更像是tableView的兄弟而不是随之移动的子节点?感谢。

3 个答案:

答案 0 :(得分:3)

  

如何在这个tableViewController中创建一个视图,它更像是tableView的兄弟,而不是随之移动的子节点?

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

更好的方法是不再使用tableviewcontroller,而是使用带有嵌入式表视图的普通视图控制器。您甚至可以通过将视图控制器添加到层次结构中来重复使用它。

另一种(更简单的)方法是处理uitableview的滚动委托方法,并根据偏移量调整标题视图的Y位置。

答案 1 :(得分: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

没有它只是干净

enter image description here

答案 2 :(得分:0)

尝试一下:

    let bottomView = UIView()
    bottomView.backgroundColor = .red // or your color
    bottomView.frame = CGRect(x: 0, y: UIScreen.main.bounds.size.height - 78, width: tableView.frame.size.width, height: 78) // 78 or your size of view
    navigationController?.view.addSubview(bottomView)
    tableView.tableFooterView = UIView()

enter image description here