我有一个TableViewController,在其中我以编程方式创建了一个UIView,它是状态栏的宽度和高度,并具有彩色背景。基本上,它作为状态栏的背景:
let statusBarBG = UIView(frame: CGRectMake(0, 0, widthOfScreen, 20))
statusBarBG.backgroundColor = UIColor...
self.view.addSubView(statusBarBG)
然而,当我上下拖动桌子时,这个状态栏背景随着整个桌面视图移动,如下图所示(左边是它看起来正常,红色的较大部分是我的导航栏的bg ):
所以我的问题是:如何在这个tableViewController中创建一个更像是tableView的兄弟而不是随之移动的子节点?感谢。
答案 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:
这是我的形象使用此代码
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar.png"] forBarMetrics:UIBarMetricsDefault];
我得到了
没有它只是干净
答案 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()