GCViewPager 1.5.4

GCViewPager 1.5.4

测试已测试
语言语言 Obj-CObjective C
许可协议 MIT
发布上次发布2015年11月

李世龙 维护。



  • gooc

ICViewPager-gc

您可以使用 ViewPager 创建滑动标签。

滑动查看内容或从标签中选择或滑动标签并选择!

ICViewPager

安装

只需将 ViewPagerController.m 和 ViewPagerController.h 文件复制到您的项目中。

或者,您可以使用 CocoaPods(这是推荐的方式)。

pod 'ICViewPager'

使用方法

从 ViewPagerController(作为 UIViewController 子类)派生一个子类,并在子类中实现 dataSource 和 delegate 方法。

在子类中将 self 分配为 dataSource 和 delegate,

- (void)viewDidLoad {

    [super viewDidLoad];

    self.dataSource = self;
    self.delegate = self;
}

方法

然后实现 dataSource 和 delegate 方法。

#pragma mark - ViewPagerDataSource
- (NSUInteger)numberOfTabsForViewPager:(ViewPagerController *)viewPager {
    return 10;
}

返回 ViewPager 中将出现的标签数。

#pragma mark - ViewPagerDataSource
- (UIView *)viewPager:(ViewPagerController *)viewPager viewForTabAtIndex:(NSUInteger)index {

    UILabel *label = [UILabel new];
    label.text = [NSString stringWithFormat:@"Tab #%i", index];
    [label sizeToFit];

    return label;
}

返回将作为标签显示的视图。创建一个 UIView 对象(或任何 UIView 子类对象)并将其提供给 ViewPager,它将使用它作为标签视图。

#pragma mark - ViewPagerDataSource
- (UIViewController *)viewPager:(ViewPagerController *)viewPager contentViewControllerForTabAtIndex:(NSUInteger)index {

    ContentViewController *cvc = [self.storyboard instantiateViewControllerWithIdentifier:@"contentViewController"];

    return cvc;
}

返回将显示为内容的视图控制器。创建一个 UIViewController 对象(或任何 UIViewController 子类对象)并将其提供给 ViewPager,它将使用视图控制器的 view 属性作为内容视图。

或者,您还可以实现 - viewPager:contentViewForTabAtIndex: 方法并返回一个 UIView 对象(或任何 UIView 子类对象),ViewPage 将使用它作为内容视图。

在 dataSource 中定义了 - viewPager:contentViewControllerForTabAtIndex:- viewPager:contentViewForTabAtIndex: 方法都是可选的。但您应该至少实现一个!它们被定义为可选的,以提供给您一种选择。

所有代理方法都是可选的。

#pragma mark - ViewPagerDelegate
- (void)viewPager:(ViewPagerController *)viewPager didChangeTabToIndex:(NSUInteger)index {

    // Do something useful
}

ViewPager 会通过 - viewPager:didChangeTabToIndex: 方法通知您的代理对象,以便您可以执行一些有用的事。

#pragma mark - ViewPagerDelegate
- (CGFloat)viewPager:(ViewPagerController *)viewPager valueForOption:(ViewPagerOption)option withDefault:(CGFloat)value {

    switch (option) {
        case ViewPagerOptionStartFromSecondTab:
            return 0.0;
        case ViewPagerOptionCenterCurrentTab:
            return 0.0;
        case ViewPagerOptionTabLocation:
            return 0.0;
        default:
            return value;
    }
}

您可以通过 viewPager:valueForOption:withDefault: 代理方法更改 ViewPager 的选项。只需返回给定选项所需的值。您不需要为每个选项返回值。只为感兴趣的选项返回值,ViewPage 会使用默认值处理其余部分。可用的选项定义在 ViewPagerController.h 文件中,下面将描述。

#pragma mark - ViewPagerDelegate
- (UIColor *)viewPager:(ViewPagerController *)viewPager colorForComponent:(ViewPagerComponent)component withDefault:(UIColor *)color {

    switch (component) {
        case ViewPagerIndicator:
            return [[UIColor redColor] colorWithAlphaComponent:0.64];
        default:
            return color;
    }
}

您还可以更改一些颜色。就像选项一样,返回感兴趣组件的颜色,并省略所有其他部件! 链接

选项

每个选项都有一个默认值。所以

  • ViewPagerOptionTabHeight:标签栏的高度,默认为44.0
  • ViewPagerOptionTabOffset:标签栏从左侧的距离,默认为56.0
  • ViewPagerOptionTabWidth:任何标签项的宽度,默认为128.0
  • ViewPagerOptionTabLocation:1.0:顶部,0.0:底部,默认为顶部
  • ViewPagerOptionStartFromSecondTab:1.0:YES,0.0:NO,定义视图是否从第一个标签或第二个标签开始。默认为NO
  • ViewPagerOptionCenterCurrentTab:1.0:YES,0.0:NO,定义标签是否应该居中,给定标签宽度。默认为NO
  • ViewPagerOptionFixFormerTabsPositions:1.0:YES,0.0:NO,定义活动的标签是否应该通过偏移量向左边放置。仅影响以前的标签。如果设置为1.0(《YES》),第一个标签将与第二个标签放在同一位置, leaving space before itself。默认为NO
  • ViewPagerOptionFixLatterTabsPositions:1.0:YES,0.0:NO,类似于ViewPagerOptionFixFormerTabsPositions,但影响后标签,使它们在自身后面留出空间。默认为NO

组件

ViewPagerController的主要部分

  • ViewPagerIndicator:活动标签视图中的彩色线条。
  • ViewPagerTabsView:标签视图本身。当在- viewPager:colorForComponent:withDefault:方法中使用时,返回的颜色将被用作标签视图的背景颜色。
  • ViewPagerContent:提供视图作为内容。当在- viewPager:colorForComponent:withDefault:方法中使用时,返回的颜色将被用作内容视图的背景颜色。

要求

ViewPager支持最低iOS 6和ARC。

同时支持iPhone和iPad。

联系方式

@iltercengiz

Ilter Cengiz

注意(对所有对ViewPager感兴趣的人):我不能长时间抽出时间来改进ViewPager,但我有一些关于它的酷计划。所以,如果你遇到任何问题、错误等,请原谅我,并发出一些拉取请求。感谢您的兴趣和支持。

许可证

ICViewPager采用MIT许可证。有关更多信息,请参阅LICENCE文件。