ICViewPager 1.5.1

ICViewPager 1.5.1

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

Ilter Cengiz 维护。




  • Ilter Cengiz

您可以使用 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 子类对象),ViewPager 将使用它作为内容视图。

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

所有 delegate 方法都是可选的。

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

    // Do something useful
}

ViewPager将通过 - viewPager:didChangeTabToIndex: 方法提醒您的 delegate 对象,因此您可以进行一些有用的操作。

#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: delegate 方法更改 ViewPager 的选项。只需返回指定选项的期望值。您不需要为每个选项返回值。只返回对感兴趣选项的值,ViewPager 将使用默认值处理其他部分。可用选项在 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,定义视图是否从第1个还是第2个标签开始显示。默认为 NO
  • ViewPagerOptionCenterCurrentTab: 1.0: YES, 0.0: NO,定义是否应该使用给定标签宽度将标签居中。默认为 NO
  • ViewPagerOptionFixFormerTabsPositions: 1.0: YES, 0.0: NO,定义是否应该将活动标签放置在左侧偏移量处的外边框处。仅影响前一个标签。如果设置为 1.0(YES),第一个标签将与第二个位置相同,留出它之前的空间。默认为 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,但我有一些关于它的精彩计划。所以如果你遇到问题、错误等,请原谅我,并提交一些 pull 请求。感谢您的兴趣和支持。

许可

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