注意:我在下面的更新答案中添加了我的新解决方案。
我尝试重现我们在 iPhone/iPod touch 上的 Mobile Safari 选项卡中看到的效果。
基本上,它是一个 UIScrollView,它拥有 4 个可重用的 UIView(充当环形缓冲区),并水平滚动。滚动时,UIView 的不透明度将通过偏移无缝淡入/淡出。
目前,我在- (void)scrollViewDidScroll:(UIScrollView *)scrollView
. 比如从 UIScrollView 中获取 contentOffset,确定分页,计算 contentOffset 和每个 UIView 位置之间的 delta,决定/设置每个 UIView 在scrollViewDidScroll:
被调用时的 alpha 值。
它可以工作,性能还可以,一切运行顺利,但唯一的问题是计算量太大。
我试过UIView的beginAnimations:
and commitAnimations:
,但是在里面没用scrollViewDidScroll:
,因为1)新的alpha值还是要自己计算,2)scrollViewDidScroll:滚动的时候一直调用,这里做动画没意义。有没有办法用 Core Animation 重写这部分?所以我不必自己计算每个 UIView 的 alpha 值,相反,我可以将整个作品留给 Core Animation。