contentOffset相反的计算

时间:2019-07-05 09:24:54

标签: ios swift

我有一个按钮,可在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)
    }
}

1 个答案:

答案 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)