2016-02-09 6 views
7

Я положил searchBar внутри tableHeaderView. Все работает отлично на iphone 6, но на iphone 5s Я получаю этот странный результат?searchBar, перекрываемое видом заголовка раздела

override func viewDidLoad() { 
    super.viewDidLoad() 
    tableView.delegate = self 
    tableView.dataSource = self 
    tableView.sectionIndexColor = Constants.Colors.ThemeGreen 
    tableView.sectionIndexBackgroundColor = UIColor.clearColor() 
    tableView.sectionIndexTrackingBackgroundColor = UIColor.clearColor() 
    tableView.contentInset = UIEdgeInsetsMake(0, 0, CGFloat(Constants.Dimensions.TabBarHeight), 0) 
    resultSearchController = UISearchController(searchResultsController: nil) 
    resultSearchController.searchResultsUpdater = self 
    resultSearchController.dimsBackgroundDuringPresentation = false 
    resultSearchController.definesPresentationContext = true 
    tableView.tableHeaderView = resultSearchController.searchBar 
    resultSearchController.searchBar.sizeToFit() 

//Fetch data for the first time 
    do{ 
     try fetchedResultsController.performFetch() 
     listHeaderView?.count = "\(fetchedResultsController.fetchedObjects!.count)" 
    }catch{ 
     print("Error - Couldn't fetch list") 
    } 
  • Примечание: Я использую NSFetchedResultController для извлечения данных

enter image description here

+0

Я все еще сталкиваюсь с этой проблемой –

ответ

3

Вот решение. Не называть sizeToFit() ПОСЛЕ того, как класть searchBar в tableHeaderView, но называть его ПЕРЕД. Что, черт возьми, происходит за сценой ... Интересно ..

resultSearchController.searchBar.sizeToFit() //Important to call sizeToFit BEFORE adding it to tableHeaderView or you get layout issues 
tableView.tableHeaderView = resultSearchController.searchBar 
+0

даже после вызова sizeToFit перед добавлением, я столкнулся с этой проблемой ... –

0

Это только кажется ниже строки кода не делает работу ... больше ничего, кажется, работает прямо сейчас.

self.tableView.beginUpdates() 
     // self.tableView.setTableHeaderView(headerView: self.filterView!) 
     //self.tableView.reloadData() 
     self.tableView.layoutIfNeeded() 
     self.tableView.layoutSubviews() 
     self.tableView.endUpdates() 

каждый раз, когда ваша таблица изменяет размер или сменяет ограничения, которые необходимо вызывать над кодом.

0

Попробуйте это может работать

resultSearchController.clipToBounds = true

Вы также можете попробовать то же самое, как

searchControl.searchBar.clipToBounds = true 

Я думаю, что это работает для вашего кода.

Смежные вопросы