带有UIPageViewController的Sticky tabbar

时间:2017-05-25 19:29:42

标签: ios swift uitableview uiscrollview

情况如下: enter image description here

我的MainViewController包含:

  1. HeaderView。身高:260(没有Tabbar:200)
  2. Tabbar是一个简单的UIView扩展名,是标题的一部分。身高:60
  3. UIPageViewController位于包含3个tableviews的标签栏下方(每个标签包含一个tableview)
  4. UIScrollView
  5. 中的所有内容

    我的目标是将整个视图滚动到顶部,这样只有标签栏保持可见(它应该粘在顶部),然后才能滚动UITableView。

    我的方法很简单:

    在我的TableView控制器中,我有:

    override func scrollViewDidScroll(_ scrollView: UIScrollView) {
        NotificationCenter.default.post(name: NSNotification.Name(rawValue: "TableViewScrolled"), object: nil)
    }
    

    在我的MainViewController中,我添加了一个观察者:

    NotificationCenter.default.addObserver(self,
                                           selector: #selector(self.handleScroll),
                                           name: NSNotification.Name(rawValue: "TableViewScrolled"),
                                           object: nil)
    

    每次滚动TableView时,MainViewController都会收到通知,而handleScroll方法会执行以下操作:

    @objc private func handleScroll(_ notification: NSNotification) {
        scrollView.contentOffset.y = tableView.contentOffset.y
    }
    

    这只能部分起作用。效果如下: https://i.gyazo.com/b1f78c43f6847167295201f60731f274.mp4

    问题是TableView的滚动速度比Header快(如上面的视频所示)。为什么会这样?如何解决这个问题呢?

0 个答案:

没有答案