如何防止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 一个,但仍然没有用。
这是预期的还是我应该做些不同的事情?
提前致谢!
由于我没有找到问题的答案,所以我通过将此搜索栏后面的视图中的背景色设为白色来解决它。
我在堆栈视图中有这个搜索栏,所以我只是将堆栈视图背景颜色更改为白色。
它解决了问题,但我仍然想知道为什么会这样。
我正在测试一个简单的动画,通过点击按钮隐藏 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 一个,但仍然没有用。
这是预期的还是我应该做些不同的事情?
提前致谢!
由于我没有找到问题的答案,所以我通过将此搜索栏后面的视图中的背景色设为白色来解决它。 我在堆栈视图中有这个搜索栏,所以我只是将堆栈视图背景颜色更改为白色。
它解决了问题,但我仍然想知道为什么会这样。