本文实现的效果是类似于网易新闻客户端的那种可以左右滑动的效果
本文的目的是为了实现类似于网易新闻那种可以左右滑动的各个页面之间的切换。为了实现这种效果,首先创建一个scrollView,并设置内容大小。我这里实现的是三个页面的左右滑动,所以在这里创建了三个控制器,并把控制器的view添加到了scrollView上面。
并且设置各个控制器的view的位置大小。在这里面有一个问题就是在scrollView里面一定要定义这三个不同的控制器,并让控制器成为scrollView的成员,这样做是为了避免在创建完了控制器以后视图在setContentView方法以后视图被销毁(生命周期的问题)。
然后我们把这个scrollView添加到我们的根视图控制器里面就好了,为了避免重复创建视图,我才用了懒加载的模式。
这样一个左右滑动的滚动试图就创建好了,这样控制器里面的代码全部抽离出来,对于后期的维护开发会很方便,而且也减少了控制器de冗余性。这只是自己的一种思路,仅供参考。相信大家通过思考一定会有更好的办法的。
接了来实现的是类似于QQ好友列表的展开与折叠的功能。为了实现每个分区的互不影响,我们创建了一个数组,用来标记每个分区的展开与折叠的状态,我是这样处理的,请参考下图。
数组里面的值默认都是NO,接下来我们创建的是分区视图
我创建的是一个继承自UITableViewHeaderFooterView的view,在这里面添加代理,是为了实现点击的方法,当然了,也可以使用block的回调。在这里我要的是一个代理,代理的参数应该传一个tag值来标志我点击的是哪一个分区,这个tag值要和分区的section对应起来,我这里的tag值用的是1000加上section,之所以加1000就是为了避免跟系统的某些视图的tag值重复。代理方法参考下图
我们取出tag值 然后去更改我们存放每个分区状态的数组的值,然后再刷新一下数据,这样就会重新走tableView的代理方法了,接下来我们在下面的这个方法里面添加代码
这样一个类似于QQ分组好友的展开折叠就实现了。效果图如下
这是自己实现一个功能的逻辑思路以及部分代码,相信只要是逻辑理清了,功能的实现会变得简单。这里仅供参考。