你的位置:首页 > 软件开发 > 操作系统 > 【IOS】模仿windowsphone列表索引的控件YFMetroListBox

【IOS】模仿windowsphone列表索引的控件YFMetroListBox

发布时间:2016-05-30 17:00:25
有没有觉得UITableView自带的右侧索引很难用,我一直觉得WindowsPhone中的列表索引非常好用。所以呢,我们来实现类似Windows Phone中的列表索引(这就是信仰)。最终实现效果图:1.完整的首字母索引 ...

【IOS】模仿windowsphone列表索引的控件YFMetroListBox

有没有觉得UITableView自带的右侧索引很难用,我一直觉得WindowsPhone中的列表索引非常好用。

所以呢,我们来实现类似Windows Phone中的列表索引(这就是信仰)。

最终实现效果图:

1.完整的首字母索引                                                     2.Header名称索引

【IOS】模仿windowsphone列表索引的控件YFMetroListBox         【IOS】模仿windowsphone列表索引的控件YFMetroListBox

 

想法:这个控件是该继承UITableView还是UIView,抑或其他的呢?

想要写的这个控件,只是在UITableView的基础上增加-点击HeaderView事件-来弹出索引。

弹出索引的大小为控件的大小,并直接添加到父视图中。

所以觉得直接继承UITableView会更加方便,而继承UIView虽然说在写法上更简单些,但是总觉得不太好。

 

碰巧看到一个实现UITableView动画的例子,于是参照着实现了HeaderView的点击事件。

https://github.com/applidium/ADLivelyTableView   

原理是通过增加一个中间代理,只在控件中实现了willDisplayCell协议来控制滑动时的动画,

如果在VC中使用控件时也实现了该协议,则让控件中的代理发送该消息给VC。这样的话相当

于UITableView的实现部分都不变,动画都交给控件来实现。

 -------------------------------------我是分割线----------------------------------------------

1.继承UITableView   -   增加中间代理

普通流程:UIViewController<UITableViewDelegate>    --->   UITableView           

               tableView.delegate = self;

控件流程:继承UITableView :  YFMetroListBox : UITableView

     增加私有属性:       id<UITableViewDelegate> _selfDelegate;

     UIViewController<UITableViewDelegate>    --->   YFMetroListBox<UITableViewDelegate>         --->         UITableView

           tableView.delegate = self;                                  重写YFMetroListBox代理见下面代码

原标题:【IOS】模仿windowsphone列表索引的控件YFMetroListBox

关键词:Windows

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录