2015-12-02 2 views
1

Я успешно реализовал панель поиска, теперь я хочу, когда проведите по экрану вниз, чтобы отобразить панель поиска, чтобы снова прокрутить вниз, чтобы скрыть панель поиска. Какие методы я должен использовать? СпасибоSwift autohide/показать панель поиска сверху стола

ответ

4

UITableView подкласс UIScrollView который имеет делегировать методы (от UIScrollViewDelegate), которые вы можете использовать, чтобы узнать, когда свиток уже начался и закончился.

Вы можете использовать способ scrollViewDidScroll(_:) для получения уведомления, когда пользователь начнет прокрутку, и scrollViewDidEndDecelerating(_:), чтобы получать уведомление о завершении прокрутки.

С вашего вопроса, я предполагаю, что у вас уже есть способ показать/скрыть панель поиска; вы просто ищете «когда» для вызова своего метода showSearchBar или hideSearchBar.

Возможно, у вас есть свойство Bool, которое хранит ли скрытый код searchBar и вызывает вас соответствующие методы.

let searchBarIsHidden = true 

override func scrollViewDidEndDecelerating(scrollView: UIScrollView) { 
    if searchBarIsHidden { 
     showSearchBar() //your show search bar function 
    } else { 
     hideSearchBar() //your hide search bar function 
    } 
} 

Теперь вы должны убедиться, что вы измените значение searchBarIsHidden в конце вашего showSearchBar и hideSearchBar

+0

благодарственное вы. Отлично работает! :) – Igy

1

Красивая скрыть и показать, используя верхнее ограничение в строке поиска в Swift:

var lastContentOffset:CGFloat = 0 

func scrollViewDidScroll(_ scrollView: UIScrollView) { 
    let bottomOffset = scrollView.contentSize.height - scrollView.bounds.height 

    guard scrollView.contentOffset.y < bottomOffset else { 
     return 
    } 

    guard scrollView.contentOffset.y > 0 else { 
     searchBarTopConstraint.constant = 0 
     return 
    } 

    let offsetDiff = scrollView.contentOffset.y - lastContentOffset 

    let unsafeNewConstant = searchBarTopConstraint.constant + (offsetDiff > 0 ? -abs(offsetDiff) : abs(offsetDiff)) 
    let minConstant:CGFloat = -searchBar.frame.height 
    let maxConstant:CGFloat = 0 

    searchBarTopConstraint.constant = max(minConstant, min(maxConstant, unsafeNewConstant)) 

    lastContentOffset = scrollView.contentOffset.y 
} 
Смежные вопросы