我有一个TableViewController,在其中我通过编程创建了一个UIView,它是状态栏的宽度和高度,并且有一个彩色的背景。基本上,它作为状态栏的背景:
let statusBarBG = UIView(frame: CGRectMake(0, 0, widthOfScreen, 20))
statusBarBG.backgroundColor = UIColor...
self.view.addSubView(statusBarBG)
但是,当我在这个状态栏背景中上下拖动时,整个表视图都会移动,如下所示(在左边,红色的更大的部分是我的导航栏的bg):
因此,我的问题是:如何在这个tableViewController中创建一个视图,这个视图更像是tableView的同级视图,而不是一个随它移动的子视图?谢谢。
发布于 2015-03-31 22:58:10
如何在这个tableViewController中创建一个视图,这个视图更像是tableView的同级视图,而不是一个随它移动的子视图?
不幸的是,对于tableviewcontroller来说,这是不可能的,因为tableviewcontroller的视图是一个UITableView实例,而后者又是UIScrollView的一个子类。基本上,任何你作为滚动视图的子代所放的东西都会随它滚动。
一种更好的方法是不再使用tableviewcontroller,而是使用带有嵌入式表视图的普通视图控制器。您甚至可以通过将视图控制器添加到继承结构中来重用它。
另一种(更容易)的方法是处理uitableview的滚动委托方法,并根据偏移量调整标题视图的Y位置。
发布于 2015-04-01 00:05:27
如果您只希望该视图表现为背景色,则只需使用图像。
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar.png"] forBarMetrics:UIBarMetricsDefault];
或者使用imageWithColor如果你只想要一个颜色而不是一个自定义的图像.在你的照片里看起来你想要整个导航栏+状态栏都是红色的.这个代码是整个导航栏+状态栏的代码.如果你想要状态栏不同,只需设计一个图像并使用该代码.我不是一个迅速的人对不起,但这应该是非常相似的.
编辑:啊,您没有在导航控制器中使用那个tableView吗?那可能就没用了..。
编辑2:
这是我的形象
用这个代码
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbar.png"] forBarMetrics:UIBarMetricsDefault];
我得到了
如果没有,它就是干净的
发布于 2019-11-24 13:47:46
试试这个:
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()
https://stackoverflow.com/questions/29379931
复制相似问题