UISearchBar 上方的 UITableView 部分

Posted

技术标签:

【中文标题】UISearchBar 上方的 UITableView 部分【英文标题】:UITableView Section above UISearchBar 【发布时间】:2016-03-02 18:11:08 【问题描述】:

我在 UITableView 中添加了一个 UISearchBar。

// Search Bar
var leftPosSearchBar: CGFloat = 0
if (UIDevice.currentDevice().userInterfaceIdiom == UIUserInterfaceIdiom.Phone)  leftPosSearchBar = 4 
self.searchBar = UISearchBar(frame: CGRect(
    x: max(leftPosSearchBar, self.tableView.contentOffset.x + self.tableView.contentInset.right), 
    y: max(0, self.tableView.contentOffset.y + self.tableView.contentInset.top), 
    width: self.view.bounds.width, height: 45))
let tableHeaderView: UIView = UIView(frame: self.searchBar.frame)

tableHeaderView.addSubview(self.searchBar)
tableHeaderView.bringSubviewToFront(self.searchBar)

self.tableView.tableHeaderView = tableHeaderView
self.searchBar.searchBarStyle = UISearchBarStyle.Prominent
self.searchBar.delegate = self
self.searchBar.returnKeyType = UIReturnKeyType.Done
self.searchBar.enablesReturnKeyAutomatically = false
self.searchBar.translucent = false

还添加了这个简短的 sn-p 以“修复”滚动时顶部的 UISearchBar。

func scrollViewDidScroll(scrollView: UIScrollView) 
    var searchBarFrame:CGRect = self.searchBar.frame
    searchBarFrame.origin.y = max(0, 
        scrollView.contentOffset.y + scrollView.contentInset.top)
    self.searchBar.frame = searchBarFrame

在我使用 UITableView 中的部分之前,一切正常。然后这些部分在 UISearchBar 上分层并粘在 UITableView 的顶部。它应该被粘在 UISearchBar 下。

【问题讨论】:

【参考方案1】:

在scrollViewDidScroll中添加bringSubviewToFront。

tableHeaderView.bringSubviewToFront(searchBar)

我正在做类似的事情,但使用 UIView,这对我有用。

【讨论】:

或试试 tableView.bringSubviewToFront(tableHeaderView)

以上是关于UISearchBar 上方的 UITableView 部分的主要内容,如果未能解决你的问题,请参考以下文章

UISearchBar上方的UITableView背景颜色[重复]

在 UISearchBar 和 UITableView 上方添加 UILabel,如 WhatsApp 联系人

将 UISearchBar 放在 tableview 上方但不在 tableview 或导航栏中

摆脱 UITableView 上方的行

UISearchBar 黑线/边框

UISearchBar 和 tableHeaderView