试图通过Swift中的Alpha隐藏SearchBar

时间:2018-04-22 13:42:34

标签: swift scroll uisearchbar alpha navigationbar

我正在使用Xcode 9和Swift 4.我在尝试使用y中的滚动来隐藏SearchBar时遇到了麻烦。如何访问此背景以尝试隐藏它? 代码:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let transp:Float = Float(1 - (self.mTableView.contentOffset.y / (self.mTableView.contentSize.height - self.mTableView.frame.size.height) * 60))
    self.navigationController!.navigationBar.alpha = CGFloat(transp)
    self.mSearchController.searchBar.alpha = CGFloat(transp)
    self.mSearchController.searchBar.isTranslucent = true
    titleMsgView.alpha = CGFloat(transp)
}

这是一个示例gif链接: https://www.dropbox.com/s/6is5mukpk1yew8e/bgSearch.gif?dl=0

1 个答案:

答案 0 :(得分:0)

SearchView在改变外观方面非常困难。您可以尝试循环遍历SearchView的子视图并将其所有alpha值设置为0,如下所示:

for subView in mSearchController.searchBar.subviews {
    subView.alpha = 0
    for deepSubView in subView.subviews {
        deepSubView.alpha = 0
    }
}

另外,请注意:您可以从代码中删除大量self个关键字。

编辑:刚刚删除了搜索栏,但通过一些编辑,我们可以解决这个问题:

for subview in mSearchController.searchBar.subviews.last!.subviews {
    if type(of: subview) == NSClassFromString("UISearchBarBackground") {
        subview.alpha = 0
    }
}

这应该可以做到!