2017-09-28 29 views
0

我有一個UITableView,其中我將其標題設置爲搜索欄。當我專注於搜索欄,它跳轉到屏幕的頂部,在設備上比iOS11正常工作時,我沒有使用視圖導航欄,我想在表的頂部固定搜索欄iOS 11,搜索欄從表跳轉到頂部HeaderView

self.definesPresentationContext = true 
self.extendedLayoutIncludesOpaqueBars = true; 

searchController.delegate = self 
searchController.hidesNavigationBarDuringPresentation = false 
searchController.searchResultsUpdater = self 
searchController.dimsBackgroundDuringPresentation = false 
searchController.searchBar.placeholder = NSLocalizedString("SEARCH_BOX_TEXT", bundle: bundle!, comment: "Search box text") 

searchController.searchBar.sizeToFit() 
searchController.searchBar.barTintColor = UIColor.lightGray 

searchController.searchBar.setValue(NSLocalizedString("SEARCH_BAR_CANCEL_BUTTON", bundle: bundle!, comment: "Search bar cancel button"), forKey: "_cancelButtonText") 

productListTable.tableHeaderView = searchController.searchBar 

前:

enter image description here

後,我聚焦到搜索欄:

enter image description here

+1

的[iOS的11個搜索欄跳躍到屏幕頂部]可能的複製(https://stackoverflow.com/questions/45798923/ios- 11-search-bar-jumping-to-top-of-screen) – D1mers0n

+0

@ D1mers0n,我頂部沒有導航欄,鏈接中提供的答案不能解決我的問題,也沒有任何接受的答案 – kakajan

回答

0

我也把我的搜索酒吧到我的桌面標題

所以,也許你可以考慮我的答案,可以在iOS11中正常工作。

這是它。

在你的故事板:

enter image description here

代碼:

override func viewDidLoad() { 

    super.viewDidLoad() 

    self.setupSearchController() 

} 

func setupSearchController() { 

    self.searchResultController = UISearchController(searchResultsController: nil) 

    self.searchResultController.searchResultsUpdater = self 

    self.searchResultController.delegate = self 

    self.searchResultController.hidesNavigationBarDuringPresentation = false 

    self.searchResultController.dimsBackgroundDuringPresentation = false 

    self.searchResultController.searchBar.delegate = self 

    self.searchResultController.searchBar.searchBarStyle = .minimal 

    self.searchResultController.searchBar.tintColor = UIColor.white 

    self.phoneSearchView.searchBarContainer.addSubview(self.searchResultController.searchBar) 

    self.memberListTableView.tableHeaderView = self.phoneSearchView 

} 

override func viewWillLayoutSubviews() { 

    super.viewWillLayoutSubviews() 

    self.searchResultController.searchBar.sizeToFit() 

    self.searchResultController.searchBar.frame.size.width = self.phoneSearchView.searchBarContainer.frame.size.width 

    self.searchResultController.searchBar.frame.size.height = self.phoneSearchView.searchBarContainer.frame.size.height 

} 

結果:

enter image description here