Skip to content

Latest commit

 

History

History
92 lines (77 loc) · 4.39 KB

README_zh-CN.md

File metadata and controls

92 lines (77 loc) · 4.39 KB

中文介绍

原谅我拙劣的英文

Issue 须知

鉴于很多朋友在提 issue 的时候没有提供足够的信息,在此希望大家在提 issue 时能够包含下面信息:

1. Xcode / iOS / WMPageController 的版本信息;
2. 编译错误或者运行时错误时,编译器提供的所有信息;
3. 你设置的关键的代码片段; (如果能够提供 demo 复现那就更好了,我就是懒-。-)
4. 其他任何你觉得有可能帮助的信息;

以上信息会更好的帮助我改善这个项目(不要再提为什么我的xxx方法没用这样的问题了,没有信息我真的做不出判断😭)。 如果你有什么好的建议或者修改,非常欢迎提出 issue 或者直接发起 Pull request. 任何改进都非常欢迎:bug 修复, 拼写错误或者用词语法错误, 以及文档补充以及特性需求等等。期待你的贡献!

特性

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

使用

创建一个控制器继承自WMPageController, 可以通过两种方式来初始化控制器

通过 Class 创建

使用以下方法创建控制器:

- (instancetype)initWithViewControllerClasses:(NSArray *)classes 
                               andTheirTitles:(NSArray *)titles;

其中,Classes是要传人显示的控制器的类型,比如[UITableViewController class], titles是要显示的控制对应的标题。

使用 datasource (推荐!)

使用方法和 UITableView 相似,在子类中实现以下数据源方法即可:

- (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 方法,例如:

- (instancetype)init {
    return [self initWithNibName:@"xxxViewController" bundle:nil];
}

2.如果使用 datasource,那么实现对应的数据源即可,例如:

- (UIViewController *)pageController:(WMPageController *)pageController viewControllerAtIndex:(NSInteger)index {
    UIStoryboard *sb = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    UIViewController *vc = [sb instantiateViewControllerWithIdentifier:@"WMViewController"];
    return vc;
}

Styles

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

使用Pod管理

最新版本是2.4.0,相比较2.3.0有一些 API 接口改动,谨慎选择(可以更加自由的定义 menuView 和 contentView 的 frame)

   pod 'WMPageController', ~> '2.4.0'

使用旧的稳定版本:

   pod 'WMPageController', ~> '2.3.0'

要点

1.如果你的控制器的位置或者大小出现了任何问题,试试设置下 viewFrame 这个属性可以帮助你自定义你的控制器大小及位置

2.如果需要传入 UICollectionViewController, 需要重写 - init 方法,来为UICollectionViewController提供一个 UICollectionViewLayout。 方式如下:

- (instancetype)init {
    // init layout here...
    self = [self initWithCollectionViewLayout:layout];
    if (self) {
        // insert code here...
    }
    return self;
}

许可

该项目使用 MIT 许可证,详情见 LICENSE 文件。