Cover flow是苹果首创的将多首歌曲的封面以3D界面的形式显示出来的方式。如下图所示:
从图中可以看到,显示在中间的图片为目标图片,两侧的图片在y轴都旋转了一定的角度,并且每两张图片之间都保持了一定的距离。在交互(如点击两侧的图片)的时候,滑动到中间的图片会逐渐放大,旋转的角度由原来的旋转角度a变为0,且位置上移动中间,变成新的目标图片;同时原处于中间位置的图片则缩小、旋转一定的角度、位置偏移到一侧。所以在整个过程中,主要有两个属性发生了变化:角度与位置(缩放只是视觉上的,并没有进行缩放操作)。
在每次点击一张图片时,如果这张图片在目标图片的左边,则所有的图片都会向右移动,同时做相应的旋转;相反,点击目标图片右侧的图片时,所有图片都会向左移动并做相应的旋转。
从如上描述的效果,可以看出在Cover Flow中最主要的的操作有两个:3D仿射变换与动画。仿射变换实质上是一种线性变换,通常主要用到的仿射变换有平移(Translation)、旋转(Rotation)、缩放(Scale)。
对于这两种操作,iOS都提供了非常简便的接口来实现。接下来我们便以tapku的实现方法为例,来说明实现Cover Flow的基本过程。
一、图片的布局
从效果图可以看出,图片是按一条直接排列,图片与图片之间有一定的间距,目标图片是正向显示,两侧的图片则按一定的角度进行了旋转,与目标图片形成一定的角度。同时我们还能看到每个图片都有一个倒影,并且这个倒影是渐变的,由上而下逐渐透明度逐渐减小。
1、 Cover Flow单元的定义
在tapku中,每一个图片附属于一个视图(TKCoverflowCoverView),这个视图相当于UITableViewCell,它包含了三个要素:图片(imageView),倒影图片(</