在 UISearchController 下添加可水平滚动的过滤器选项

Add horizontally scrollable filter options under UISearchController

我正在开发一个允许用户在 table 中搜索内容的页面,我想在搜索栏下添加一些过滤器选项。我已经以编程方式将 UISearchController 添加到导航栏中,但我想知道如何在搜索栏下方添加一个可水平滚动的过滤器选项列表(就像这张图片右侧的布局:https://i.stack.imgur.com/XrjIq.png)。谢谢!

我意识到这可能是 asked/answered 之前的内容,但我找不到一个页面讨论这个问题。如果您有 link 解决方案,我将不胜感激!

您可以创建一个水平滚动的 collectionView,其中包含过滤器按钮,并将其设置在 UISearchController 下方。

您可以通过编程方式创建这样的集合视图:

 lazy var collectionView: UICollectionView = {
        let layout = UICollectionViewFlowLayout()
        layout.sectionInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
        layout.minimumInteritemSpacing = 0
        layout.scrollDirection = UICollectionViewScrollDirection.horizontal
        let cv = UICollectionView(frame: .zero, collectionViewLayout: layout)
        cv.backgroundColor =  UIColor.white
        cv.dataSource = self
        cv.delegate = self
        cv.translatesAutoresizingMaskIntoConstraints = false
        return cv
    }()

现在您可以使用 cellForItemAtIndexPath、numberOfItemsInSection 和其他委托向此 collectionView 添加项目。

然后您需要像这样在 collectionView 上设置约束:

 collectionView.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true
collectionView.rightAnchor.constraint(equalTo: self.view.rightAnchor).isActive = true
collectionView.topAnchor.constraint(equalTo: searchController.bottomAnchor).isActive = true
collectionView.heightAnchor.constraint(equalToConstant: 44).isActive = true

如果您需要进一步解释,请告诉我。