登录 立即注册
金钱:

Code4App-iOS开发-iOS 开源代码库-iOS代码实例搜索-iOS特效示例-iOS代码例子下载-Code4App.com

WMPageController

[复制链接]
来自: code4app 分类: iOS精品源码 上传时间: 2015-11-3 18:38:00
Tag:segements pageControl 切换 标签

项目介绍:

特性
  • 增加了缓存机制,对加载过的控制器进行缓存,当内存过高时自动清理缓存。
  • 可通过itemMargin和itemsMargins来定制顶部标题的间距,通过viewFrame来定制子控制器的frame属性。
  • 当标题宽度之和不足宽度时,自动计算并为顶部item添加间隙。
  • 适配横屏,当设备旋转时自动调整frame。
  • 可通过设置itemsWidths属性来设置不同的标题宽度,例如 @[@(100),@(80),@(50).....];
  • 增加了reload功能,可以像网易新闻那样重新更新标题和控制器。

使用
首先,把下面红框里的内容拖入项目。
然后,创建一个控制器继承自WMPageController, 可以通过两种方式来初始化控制器
通过 Class 创建
使用以下方法创建控制器:
[Objective-C] 查看源文件 复制代码
- (instancetype)initWithViewControllerClasses:(NSArray *)classes 
                               andTheirTitles:(NSArray *)titles;




其中,Classes是要传人显示的控制器的类型,比如[UITableViewController class], titles是要显示的控制对应的标题。
使用 datasource
使用方法和 UITableView 相似,在子类中实现以下数据源方法即可:
[Objective-C] 查看源文件 复制代码
- (NSInteger)numbersOfChildControllersInPageController:(WMPageController *)pageController;

- (__kindof UIViewController *)pageController:(WMPageController *)pageController viewControllerAtIndex:(NSInteger)index;

- (NSString *)pageController:(WMPageController *)pageController titleAtIndex:(NSInteger)index;




使用 Storyboard / xib
1.如果用了 -initWithViewControllerClasses: andTheirTitles: 来初始化, 那么需要重写子控制器(子控制器是指你添加到 WMPageController 的控制器)的 -init 方法,例如:
[Objective-C] 查看源文件 复制代码
- (instancetype)init {
    return [self initWithNibName:@"xxxViewController" bundle:nil];
}




2.如果使用 datasource,那么实现对应的数据源即可,例如:
[Objective-C] 查看源文件 复制代码
- (UIViewController *)pageController:(WMPageController *)pageController viewControllerAtIndex:(NSInteger)index {
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"WMViewController"];
    return vc;
}


Styles
现在有4种样式提供选择,可通过设置 xxxPageController.style = WMMenuViewStyleLine 来改变样式.
如果想要在 NavigationBar 上显示导航栏, 设置.showOnNavigationBar = YES即可。

使用Pod管理

pod 'WMPageController'

要点
如果需要传入 UICollectionViewController, 需要重写 - init 方法,来为UICollectionViewController提供一个UICollectionViewLayout。 方式如下:
[Objective-C] 查看源文件 复制代码
- (instancetype)init {
    // init layout here...
    self = [self initWithCollectionViewLayout:layout];
    if (self) {
        // insert code here...
    }
    return self;
}




DEMO 下载:


相关源码推荐:

我来说两句
*滑动验证:
所有评论(146)
CV1WHj2l 2015-11-5 21:03:03
相当nice
回复
枫叶水文 2015-11-16 12:06:13
nice
回复
Mr. 2015-11-18 14:51:09
请问作者的QQ是什么?
回复
Mr. 2015-11-18 14:52:48
请问是否可以作为一个view添加到某个页面当中
回复
七彩泡泡 2015-12-9 17:36:56
你好,你这个demo写的太好了。很实用。就是我想加到StoryBoard中可以加吗?怎么加呢?想了好久也不会。。新手iOS妹子,求教
回复
王铭_Mark 2015-12-15 15:26:42
有疑问可以到我Github提issue哈~
回复
麻瓜酱 2016-1-12 12:37:15
怎么直接在首页面显示这个效果 ?类似于新闻APP ,如果有个排序、频道添加等就更好了。
回复
s89CteoE 2016-1-14 16:46:44
为什么我的缓存没有触发过  在什么情况下才能直接用缓存呢?
回复
内马尔 2016-4-13 11:05:28
淡定,淡定,淡定……
回复
提取码:  下载次数:166 状态:已购或VIP 售价:0(原价:10)金钱 下载权限:初级码农 
9107 0 166
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条
联系我们
关闭
合作电话:
13802416937
Email:
435399051@qq.com
商务市场合作/投稿
问题反馈及帮助
联系我们

广告投放| Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )

快速回复 返回顶部 返回列表