我有一个按钮,可在scrollOffset上更改颜色。我有下面的代码工作,除了它是在相反的方向执行动画。与其让它从透明变为不透明(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)
}
}
答案 0 :(得分:1)
首先,大于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)