滚动时更改按钮的 alpha

Change button's alpha while scrolling

我有两个按钮,我想在水平滚动 2 个视图时更改它们的 alpha。

我希望一个按钮以 0.3 alpha 开始,另一个以 1.0 开始。当我滚动到另一个视图时,我希望它们切换值:第一个按钮为 1.0,第二个按钮为 0.3。

我刚刚在 scrollViewDidScroll 委托中玩了一个按钮:

 allBtn.alpha = scrollView.contentOffset.x / scrollView.bounds.size.width * 0.3

我在滚动后会有 0.3 的 alpha,但是当我返回时,它会是 0。

知道如何正确执行此操作吗?

如果你的视图宽度相等,你可以试试这个"formula":

button1.alpha = (scrollView.contentOffset.x / (scrollView.bounds.size.width/2) * 0.7) + 0.3
button2.alpha = 1 - button1.alpha + 0.3
- (CGFloat)calculateButtonAlphaUsingScrollView:(UIScrollView *)scrollView withAlphaForOffsetZero:(CGFloat)alphaForOffsetZero withAlphaForOffsetMax:(CGFloat)alphaForOffsetMax {
    CGFloat width = scrollView.frame.size.width;
    CGFloat contentWidth = scrollView.contentSize.width;
    CGFloat scrollLength = contentWidth - width;
    CGFloat scrollOffset = scrollView.contentOffset.x;
    CGFloat scrollValue = scrollOffset / scrollLength;
    CGFloat alphaChange = alphaForOffsetMax - alphaForOffsetZero;
    return alphaForOffsetZero + alphaChange * scrollValue;
}