索引栏的自定义

在tableview里OC有一个自带的索引栏,是蓝色的字,具体可以参考iphone的通讯录,很多时候我们可能需要索引的颜色是黑色的,或者说我们需要更加炫酷点的效果。那么我们就需要自己来自定义一个。
1.我的思路是通过在uiview自定义来完成这个索引。主要利用了caTextLayer,来完成。先从外部获得一个数组 indexArr,也就是对应需要建立的索引的内容,之后我定义了一个方法 -(CATextLayer)textLayerWithSize:(CGFloat)size string:(NSString)string andFrame:(CGRect)frame,这个方法中,定义了包括字体的颜色和大小,因为考虑到了不同大小尺寸屏幕的问题,我将对应的frame 和size都是通过方法输入,通过外部进行判断了每一个对应的高度在来决定字体的大小。所以我设立了一个全局的变量letterHeight,从外部获取到我每一个index对应的高度,主要是通过把 给定的高度height / indexArr.count来进行的一个判断。

2.上面的已经完成了,那么indexbar已经被我们画出来了,总感觉还差了点什么,就是如何与tableview交互呢?在这里我使用了touchBegin方法,当点击的时候可以获取到对应的location,根据location / letterHeight来进行判断,获得我需要的值。之后的话我不建议使用touchMoved方法,这在我之前的文章中有介绍,而是添加了手势方法pangesture。方法是一样的获得当前的location / letterHeight,减去一之后也就是对应的Section,通过协议方法传到tableview里就可以实现了。

3.大概的实现过程可以去github上面看看实现的效果可以看我上一篇文章手势的传递问题:https://github.com/zly880/HTindex.git

posted @ 2016-04-11 13:38  zzzzzero  阅读(788)  评论(0编辑  收藏  举报