我有一个按钮,可以在滚动表上更改颜色。我有以下代码工作,只是它以相反的方向执行动画。我希望它从透明到不透明(0%-100%(而不是它相反(100%-0%(。我认为我正在计算错误的偏移,但是不确定如何计算的正确方法是?
func scrollViewDidScroll(_ scrollView: UIScrollView) {
// Offset is WRONG
var offset = scrollView.contentOffset.y / 150
if offset > 1 {
offset = 1
button.backgroundColor = UIColor(hue: 1, saturation: 1, brightness: 1, alpha: offset)
} else {
buttomn.backgroundColor = UIColor(hue: 1, saturation: 1, brightness: 1, alpha: offset)
}
}
首先,大于1的支票可以用 min()
替换:
offset = min(1, offset)
由于contentOffset.y
也可能是负面的,因此您可能需要使用max()
:
offset = max(0, min(1, offset))
现在,如果要翻转方向,只需从1:
中减去该值offset = 1 - max(0, min(1, offset))
另外,以一行进行操作:
let offset = 1 - max(0, min(1, scrollView.contentOffset.y / 150))
最后,设置颜色:
buttom.backgroundColor = UIColor(hue: 1, saturation: 1, brightness: 1, alpha: offset)