ios - 隐藏导航栏后面的第一个单元格

标签 ios swift uitableview

我需要在加载时隐藏导航栏后面的第一个单元格,并且只有当表格 View 向下滚动时才能看到。

最佳答案

您可以通过在 viewDidLoad 方法中设置其 contentInset 来隐藏导航栏后面的第一个单元格,如下所示:

self.tableView.contentInset = UIEdgeInsets(top: -44, left: 0, bottom: 0, right: 0)

之后,您可以使用scrollViewDidScroll来检测用户是否滚动tableView,并且您可以在用户向下滚动时再次设置contentInset,如下所示代码:

override func scrollViewDidScroll(scrollView: UIScrollView) {

    if (self.lastContentOffset > scrollView.contentOffset.y) {
        if lastContentOffset < -55{

            if !tablevieSetTo0 {
                self.tableView.contentInset = UIEdgeInsets(top: 65, left: 0, bottom: 0, right: 0)
                tablevieSetTo0 = true
            }
        }
    }
    self.lastContentOffset = scrollView.contentOffset.y
}

下面是完整的代码:

import UIKit

class TableViewController: UITableViewController {

    let data = ["1", "2", "3", "4", "5"]
    private var lastContentOffset: CGFloat = 0
    var tablevieSetTo0 = false

    override func viewDidLoad() {
        super.viewDidLoad()
        self.tableView.contentInset = UIEdgeInsets(top: -44, left: 0, bottom: 0, right: 0)
    }

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return data.count
    }


    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)

        cell.textLabel?.text = data[indexPath.row]
        return cell
    }

    override func scrollViewDidScroll(scrollView: UIScrollView) {

        if (self.lastContentOffset > scrollView.contentOffset.y) {
            if lastContentOffset < -55{

                if !tablevieSetTo0 {
                    self.tableView.contentInset = UIEdgeInsets(top: 65, left: 0, bottom: 0, right: 0)
                    tablevieSetTo0 = true
                }
            }
        }
        self.lastContentOffset = scrollView.contentOffset.y
    }
}

项目sample了解更多信息。

关于ios - 隐藏导航栏后面的第一个单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36028107/

相关文章:

ios - 无法将 Nib 形式的导出连接到源代码

ios - UITableView allowsMultipleSelectionDuringEditing 对于单个部分?

ios - XCode 8.3.3 上的 "Show iteration count"未在相应文件上显示指示

ios - Dropbox 错误 OAuth 请求 "Error 403"

ios - 快速读取远程通知的userInfo

ios - 有什么可行的方法可以使用 UIWebView/WKWebView 在 UITableViewCell 中加载动态内容?

swift - Alamofire 等待响应

ios - Swift:如何在同步方法中包装异步方法?

ios - 为什么不能直接将 UIView 添加到 UITableViewCell 但 contentView

ios - 动态添加对象到 UITableView 单元格