Прокрутите вниз, чтобы постепенно скрыть строку меню или просмотреть и прокрутить вверх - PullRequest
0 голосов
/ 05 июля 2018

Я хочу создать панель меню поверх представления коллекции. Когда пользователь прокручивает страницу вниз, строка меню постепенно скрывается, но пока пользователь прокручивает ее вверх, строка меню появляется сразу. Поведение похоже на функцию hidewhenswipe панели навигации. Это какое-либо решение для создания такого поведения в этой строке меню? Спасибо.

[скриншот] 1

Ответы [ 2 ]

0 голосов
/ 05 июля 2018
  1. Дайте вашему виду заголовка ограничение высоты, если оно еще не задано. Затем связал это ограничение, например

    @ IBOutlet слабый var headerViewHeightConstraint: NSLayoutConstraint!

  2. Подтвердите ваш ViewController для UICollectionViewDelegate и UIScrollViewDelegate

  3. set collectionView.delegate = self в ViewDidLoad ()

  4. UICollectionView является подклассом UIScrollView, поэтому вы можете переопределить метод делегата scrollViewDidScroll и использовать следующий код

    func scrollViewDidScroll(_ scrollView: UIScrollView) {
    if scrollView.contentOffset.y > 50 {// the value when you want the headerview to hide
        view.layoutIfNeeded()
        headerViewHeightConstraint.constant = 0
        UIView.animate(withDuration: 0.5, delay: 0, options: [.allowUserInteraction], animations: {
            self.view.layoutIfNeeded()
        }, completion: nil)
    
    }else {
        // expand the header
        view.layoutIfNeeded()
        headerViewHeightConstraint.constant = 100 // Your initial height of header view
        UIView.animate(withDuration: 0.5, delay: 0, options: [.allowUserInteraction], animations: {
            self.view.layoutIfNeeded()
        }, completion: nil)
     }
    }
    
0 голосов
/ 05 июля 2018

Я использовал HidingNavigationBarManager , чтобы сделать то, что вы только что описали и это очень просто в использовании. Если у вас есть tableView в вашем ViewController, то это так же просто, как добавить эти строки в ваш код.

var hidingNavBarManager: HidingNavigationBarManager?
...
...
override func viewDidLoad() {
    super.viewDidLoad()
    self.hidingNavBarManager = HidingNavigationBarManager(viewController: self, scrollView: tableView)

  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...