【发布时间】:2015-08-28 19:30:31
【问题描述】:
我有一个横向的UIScrollView,宽度为960。
UIScrollView 包含 3 个UIView's,每个都设置为背景颜色。
第一个是粉红色,第二个是蓝色,第三个是绿色。
我需要做的是根据用户滚动更改颜色(视图)的 alpha。
因此,如果用户在第一个屏幕(粉红色)并开始滚动到第二个页面(蓝色),那么粉红色应该会开始褪色,蓝色会变得更加明显,并且一旦用户完全滑动到该页面第二页全是蓝色的。
当我只使用一个 UIView 时,我是这样做的:
func scrollViewDidScroll(scrollView: UIScrollView) {
// Offset Percentage
var percentageHorizontalOffset = scrollView.contentOffset.x / 320;
// Reduce alpha
pinkView.alpha = percentageHorizontalOffset
}
这很容易,因为百分比从 0.0 变为 1.0
但是,我需要修改代码以支持 3 个屏幕。我之前尝试过在上述方法中将320 替换为960,但这会导致一些问题。
首先,您不再获得 0.0 到 1.0 范围内的百分比,一旦您在第二页滚动,它将是 1.0 到 2.0 的范围,这无法帮助我正确修改 alpha。
第二个是alpha变化感觉不是很流畅,尤其是UIScrollView快速滑动的时候。我之前设置了一堆 if 语句试图让它工作但没有任何工作。
当我的UIScrollView's 内容大小大于一个屏幕时,如何根据contentOffset.x 正确淡化所有 3 个UIView's 的 alpha?
【问题讨论】:
标签: ios uiscrollview contentoffset