iOS开源&高仿项目精选iOS Developer

高仿iOS版网易云音乐发现音乐页面左右滑动切换效果

2017-02-24  本文已影响432人  iOS腾蛟起凤

 LJTabPager(Github地址:LJTabPager

自己写的一个开源控件,高仿iOS版网易云音乐发现音乐和搜索音乐结果页面左右滑动切换效果(标题下面的红色短线会自动改变长度),如图所示:

动态图显示不了请点这里

要使用也很简单,只需要

LJTabPagerVC *pagerVC = [[LJTabPagerVC alloc] init];

然后给pagerVC提供一个提供视图控制器的数据源:

pagerVC.vcsSource = _source;

这个数据源要服从`LJTabPagerVCsSource`协议,这个协议有三个方法:

- (NSInteger)numberOfViewControllers; /// 要展示的视图控制器数量

- (NSArray *)titles; /// 要展示的标题数组

- (UIViewController *)viewControllerAtIndex:(NSInteger)index; /// 在位置index的视图控制器。

主要讲一下`- (UIViewController *)viewControllerAtIndex:(NSInteger)index;`这个代理方法,当滑动到某个位置,该位置的视图控制器不存在时,会向数据源请求获取这个控制器。这样做主要是为了实现懒加载。比如网易新闻有十几个标题,不可能一开始就去创建对应的十几个控制器,只有用户滑到对应的位置才去创建对应的视图控制器,以节省内存。另外,当用户浏览了这十几个控制器,这十几个控制器都在内存中,会占用比较多的内存,这时可以调用LJTabPager的`- (void)reloadVCsExceptSelected:(BOOL)exceptSelected`方法,传入YES参数,把除当前展示的控制器以外的控制器移除,以降低内存占用。当用户再左右滑动时,由于对应的控制器不存在了,所以又去重新向vcsSource数据源获取对应的控制器。

若想使某个viewController在被选中或滑到了它时收到通知,只需让它服从`LJTabPagerVCDelegate`协议,然后实现`- (void)hasBeenSelectedAndShown`方法。

默认pagerTabBar的背景色是半透明的,你也可以通过`LJTabPagerVC`的 `tabBarBKColor`属性自定义它的背景色。

可以通过`LJTabPagerVC`的`selectedLineColor`属性自定义滚动条的颜色。

可以通过`LJTabPagerVC`的`selectedTabItemColor`属性自定义选中按钮的颜色。

Github地址:LJTabPager

上一篇 下一篇

猜你喜欢

热点阅读