如何防止uiSearchBar在Hidding动画中变成半透明?

How to prevent uiSearchBar to become translucent in the Hidding animation?

我正在测试一个简单的动画,通过点击按钮隐藏 uiSearchBar。

var searchBarActive = false
override func viewDidLoad() {
    super.viewDidLoad()
    navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Search", style: .done, target: self, action: #selector(searchTapped))
}

@objc func searchTapped(sender: UIBarButtonItem) {
    if searchBarActive {
        searchBarActive = false
        UIView.animate(withDuration: 2) {
            self.searchBar.isHidden = true
//            self.searchBar.searchBarStyle = .default
//            self.searchBar.barStyle = .default
//            self.searchBar.tintColor = .none
//            self.searchBar.barTintColor = .none
//            self.searchBar.tintAdjustmentMode = .normal
//            self.searchBar.isTranslucent = false
        }
    } else {
        searchBarActive = true
        UIView.animate(withDuration: 2) {
            self.searchBar.isHidden = false
        }
    }
}

动画工作正常,但我注意到当 isHidden 设置为 true 时,searchBar 似乎 变成半透明的,因为它获得的颜色是视图的颜色在它后面。 我注意到,因为我为该视图使用了随机颜色,例如,如果您使用白色,您甚至不会注意到。

我理解如果 isHidden 属性 会使条形变淡,它似乎会改变颜色,但是通过将动画设置为较长的​​持续时间,它看起来像是从上到下(像滑动一样)当 isHidden 设置为 false 时,当 isHidden 设置为 true 时从下到上。

我尝试了注释代码(动画闭包内部和外部),希望它能修复它,但看起来某些东西仍然覆盖了这些值。我没有其他任何东西会在项目中导致这个问题。 我也检查了这个问题:Setting translucent to NO on UISearchBar 然后尝试了 isTranslucent 一个,但仍然没有用。

这是预期的还是我应该做些不同的事情?

提前致谢!

由于我没有找到问题的答案,所以我通过将此搜索栏后面的视图中的背景色设为白色来解决它。 我在堆栈视图中有这个搜索栏,所以我只是将堆栈视图背景颜色更改为白色。

它解决了问题,但我仍然想知道为什么会这样。