KHTabPagerViewController 1.0.0

KHTabPagerViewController 1.0.0

测试已测试
语言语言 Obj-CObjective C
许可证 MIT
发布上次发布2016 年 2 月

Kareem Hewady 维护。



  • Kareem Hewady

Animated gif

介绍

这是对标签页面视图控制器的一个略有调整的实现。它基于 guilhermearaujo/GUITabPagerViewController 形成很大的影响。

新增功能

  1. 支持渐进式滚动。
  2. 支持在标签栏上方绘制自定义视图。如果您需要根据子视图控制器提供更多控件,这尤其有用。
  3. 现在完全支持 RTL UI 镜像(针对阿拉拍本地化),适用于 iOS 9 及新 API 和较老版本的 iOS 8 及之前。

渐进式滚动

这是渐进式滚动和非渐进式滚动行为的一个并排比较。

渐进式(在左侧)跟踪触摸移动以相应地更新标签栏。

非渐进式(在右侧)在触摸开始移动时快速跳转到下一个标签。

Animated gif

安装

CocoaPods(推荐)
将以下行添加到您的 Podfile
pod 'KHTabPagerViewController', '~> 1.0.0'
然后向您视图控制器添加 #import <KHTabPagerViewController.h>

手动
KHTabPagerViewController 文件夹复制到您的项目中,然后在您的视图控制器中添加 #import "KHTabPagerViewController.h"

使用方法

要使用它,您应该创建一个继承自 KHTabPagerViewController 的视图控制器。按照以下方式编写您的 viewDidLoad 方法

- (void)viewDidLoad {
  [super viewDidLoad];
  [self setDataSource:self];
}

- (void)viewWillAppear:(BOOL)animated {
  [super viewWillAppear:animated];
  [self reloadData]; 
  }

然后,实现 KHTabPagerDataSource 以填充视图。数据源有几个必须实现的方法和几个可选方法。

数据源

数据源方法将允许您为您的标签页面视图控制器提供内容。

必须实现的方法

- (NSInteger)numberOfViewControllers;
- (UIViewController *)viewControllerForIndex:(NSInteger)index;

可选方法

请注意,尽管这些方法是可选的,但标签设置将需要您返回视图或字符串才能正常工作。

- (UIView *)viewForTabAtIndex:(NSInteger)index;
- (NSString *)titleForTabAtIndex:(NSInteger)index;
- (CGFloat)tabHeight;  // Default value: 44.0f
- (UIColor *)tabColor; // Default value: [UIColor orangeColor]
- (UIColor *)tabBackgroundColor; // Default: [UIColor colorWithWhite:0.95f alpha:1.0f];
- (UIFont *)titleFont; // Default: [UIFont fontWithName:@"HelveticaNeue-Thin" size:20.0f];
- (UIColor *)titleColor; // Default: [UIColor blackColor];
- (CGFloat)tabBarTopViewHeight; //Default value: 0.0f
- (UIView *)tabBarTopView;  //Default: nil
- (BOOL)isProgressiveTabBar; //Default value: YES

委托

委托方法报告在标签页面视图控制器中发生的事件。

可选方法

- (void)tabPager:(GUITabPagerViewController *)tabPager willTransitionToTabAtIndex:(NSInteger)index;
- (void)tabPager:(GUITabPagerViewController *)tabPager didTransitionToTabAtIndex:(NSInteger)index;

公开方法

- (void)reloadData;
- (NSInteger)selectedIndex;
- (void)selectTabbarIndex:(NSInteger)index animation:(BOOL)animation;

reloadData 将刷新标签页面视图控制器的内容。请确保在重新加载内容之前提供数据源。

selectedIndex 将返回当前选中标签的索引。

selectTabbarIndex:animation: 将以编程方式切换到选中视图控制器