ContentOffset相反的计算



我有一个按钮,可以在滚动表上更改颜色。我有以下代码工作,只是它以相反的方向执行动画。我希望它从透明到不透明(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)

最新更新