【问题标题】:Swift: Tableview scrolls under navigation bar but over status bar?Swift:Tableview 在导航栏下滚动但在状态栏上滚动?
【发布时间】:2016-12-30 07:30:27
【问题描述】:

我使用以下技巧隐藏了导航栏的阴影:

    self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
    self.navigationController?.navigationBar.shadowImage = UIImage()

我还有以下一套:

    self.extendedLayoutIncludesOpaqueBars = true
    self.automaticallyAdjustsScrollViewInsets = true
    self.tabBarController?.tabBar.isHidden = true

我的页面上一切看起来都很好,除了当我向上滚动我的tableView 时,它按预期位于导航栏下方,但在状态栏上方:

如何确保tableView 在导航栏和状态栏下滚动?

【问题讨论】:

  • 试试self.extendedLayoutIncludesOpaqueBars = false
  • @Mr.Bista 谢谢,我试过了,但还是不行。

标签: ios swift uitableview swift3 uinavigationbar


【解决方案1】:

这会将 UITableView 置于状态栏下方。

self.edgesForExtendedLayout=UIRectEdgeNone;
self.extendedLayoutIncludesOpaqueBars=NO;
self.automaticallyAdjustsScrollViewInsets=NO;

【讨论】:

  • 您好,请您添加对此解决方案的一些描述,因为它有效,但我不知道为什么谢谢。
【解决方案2】:

您隐藏了导航栏的默认背景,因此这是意料之中的。这意味着您正在自己在导航栏中创建绿色背景。您必须手动扩展它以覆盖状态栏和导航栏,这是默认背景所做的。

或者使用绿色图像而不是透明图像。

【讨论】:

  • 谢谢!!这就是解决方案。就是把背景图片设置成绿色!
  • 这困扰了我一段时间。将背景图像设置为空会产生各种奇怪的行为,包括跳动的视图、黑色背景等等。谢谢你。我用它从与我需要的颜色相匹配的颜色创建图像 - stackoverflow.com/questions/6496441/…
【解决方案3】:

您可以尝试 UIEdgeInsetMake 下的表格视图及其滚动视图

tableView.contentInset = UIEdgeInsetsMake(20.0, 0.0, 0.0, 0.0)
tableView.scrollIndicatorInsets = UIEdgeInsetsMake(20.0, 0.0, 0.0, 0.0)

【讨论】:

  • 谢谢,但我也试过了,但没有成功。这只会将表格视图向下移动,但是当我将表格视图向上滚动到状态栏上方时,也会发生同样的事情。
  • 你的表格滚动视图被移到顶部然后试试这个 tableView.bounces = false
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-07
  • 2021-06-06
  • 2015-11-11
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 1970-01-01
相关资源
最近更新 更多