【问题标题】:Swift Tableview header on to of screen屏幕上的 Swift Tableview 标题
【发布时间】:2018-04-13 18:03:23
【问题描述】:

我已经在我的 VC 中设置了一个带有自定义标题的表格视图。我还有一个导航栏,我已将其设为透明。我希望 tableview 标题位于屏幕顶部,而不是导航栏下方。我试图将 -navigationBar.height 放在 headerViewFrame 的 CGRect y 原点,但似乎不起作用。

我有:

我想要类似:

这是一些代码:

func setupTableView() {
    let tableView = UITableView()
    tableView.frame = view.bounds
    tableView.backgroundColor = .blue
    view.addSubview(tableView)
    tableView.separatorStyle = .none
    tableView.tableHeaderView = headerView
}

lazy var headerView: LFHeaderView = {
    let headerView = LFHeaderView()
    headerView.frame = CGRect(x: 0, y: 0, width: SCREENW, height: 242)
    return headerView
}()

谢谢

【问题讨论】:

  • 这可能是个骗局:在导航控制器中隐藏导航栏。使按钮等于后退按钮,并带有弹出动作。您将获得与您正在寻找的结果相同的结果。
  • 是的,这也是我的想法,但作为一个新的 swift 开发人员,我不知道这样做是否会失去导航控制器提供的功能
  • 不,你不会。我在一个应用程序中这样做。设计师完全移除了导航栏,但我仍然需要导航控制器的功能。
  • 您对安全区域或超级视图有最高限制?
  • @AdrianBobrowski 您的评论,您是对的。我会用它来兼容 iPhone X。

标签: ios swift uitableview uinavigationcontroller


【解决方案1】:

尝试插入 UITableView

[self.tableView setContentInset:UIEdgeInsetsMake(44,0,0,0)];

或者在swift中

self.tableView.contentInset = UIEdgeInsetsMake(44, 0, 0, 0)

【讨论】:

  • 那一行解决问题if let navBarH = navigationController?.navigationBar.frame.height { tableView.contentInset = UIEdgeInsetsMake(-navBarH, 0, 0, 0) }谢谢
【解决方案2】:

尝试使用 UITableViewController 并使用:

tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView?

【讨论】:

    【解决方案3】:

    改变你的 frame headerView 像

    headerView.frame = CGRect(x: 0, y: min(0, self.tableView.contentOffset.y), width: SCREENW, height: 242)
    

    如果仍然面临问题,那么另一个选项是转到

    Main.StoryBoard -> 选择您的 VC -> 属性检查器 -> 在顶部栏下进行检查。

    Look this answer, Here you need to do/apply check mark.

    【讨论】:

      猜你喜欢
      • 2016-01-15
      • 2017-11-01
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-20
      • 1970-01-01
      相关资源
      最近更新 更多