SJPageViewController

[复制链接]
来自: ChangSanJiang 分类: iOS精品源码 上传时间: 2020-4-27 17:01:10
Tag:

项目介绍:

Github: SJPageViewController

pod 'SJPageViewController/ObjC'
# or  
pod 'SJPageViewController/Swift'

_

顶部下拉时, headerView 跟随移动

tracking.gif

_

顶部下拉时, headerView 固定在顶部

pinnedToTop.gif

_

顶部下拉时, headerView 同比放大

sacleAspectFill.gif

_

普通模式

normal.gif

_

自定义导航栏控制透明度

alpha.gif

_

快速开始

  1. 导入头文件:

#import <SJPageViewController/SJPageViewController.h>
  1. 添加 pageViewController 属性

@interface SJViewController ()<SJPageViewControllerDelegate, SJPageViewControllerDataSource>
@property (nonatomic, strong) SJPageViewController *pageViewController;
@end
  1. 创建 pageViewController 对象:

    # 参数 options 可以传入设置 nil, 当前传入参表示为设置页面之间的间隔为3
    _pageViewController = [SJPageViewController pageViewControllerWithOptions:@{SJPageViewControllerOptionInterPageSpacingKey:@(3)}];
    _pageViewController.dataSource = self;
    _pageViewController.delegate = self;
    _pageViewController.view.frame = self.view.bounds;
    [self addChildViewController:_pageViewController];
    [self.view addSubview:_pageViewController.view]; 
  1. 实现 SJPageViewControllerDataSource 数据源方法:

# 返回控制器的数量
- (NSUInteger)numberOfViewControllersInPageViewController:(SJPageViewController *)pageViewController {
    return 3;
}

# 返回`index`对应的控制器
- (UIViewController *)pageViewController:(SJPageViewController *)pageViewController viewControllerAtIndex:(NSInteger)index {
    return SJDemoTableViewController.new;
}

以上步骤, 即创建了一个简单的pageViewController, 下面为如何配置HeaderView

配置 HeaderView

5.1 设置 HeaderView

- (nullable __kindof UIView *)viewForHeaderInPageViewController:(SJPageViewController *)pageViewController {
    UIView *headerView = [UIView.alloc initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 375)];
    headerView.backgroundColor = UIColor.purpleColor;
    return headerView;
}

5.2 设置HeaderMode

- (SJPageViewControllerHeaderMode)modeForHeaderWithPageViewController:(SJPageViewController *)pageViewController {
///
/// SJPageViewControllerHeaderModeTracking
///     - 顶部下拉时, headerView 跟随移动
///
/// SJPageViewControllerHeaderModePinnedToTop
///     - 顶部下拉时, headerView 固定在顶部
///
/// SJPageViewControllerHeaderModeAspectFill
///     - 顶部下拉时, headerView 同比放大
///
    return SJPageViewControllerHeaderModePinnedToTop;
}

5.3 设置HeaderView上拉时固定在顶部悬浮的高度(示例图中的绿色区域)

///
/// 在顶部悬浮保留的高度
///
- (CGFloat)heightForHeaderPinToVisibleBoundsWithPageViewController:(SJPageViewController *)pageViewController {
    return 44;
}

_

Github: SJPageViewController

相关源码推荐:

我来说两句
所有评论(5)
pp美景 2020-4-29 18:16:03
mark,收藏了
回复
Rf2698 2020-4-29 18:16:11
感谢大神~
回复
bug是啥 2020-4-29 18:16:30
相当不错,感谢无私分享精神!
回复
知新1990 2020-4-29 18:16:41
内容很好,棒棒哒
回复
hellokenken 2020-4-29 18:16:53
code4app确实是个好地方,必须支持~
回复
kengsir 2020-4-29 18:16:55
code4app好的代码demo真的很多,谢谢啦~
回复
839 0 0
联系我们
首页/微信公众账号投稿

帖子代码编辑/版权问题

QQ:435399051,742864542

如何获得代码达人称号?

代码贡献英雄榜
用户名 下载数
通过邮件订阅最新 Code4App 信息
上一条 /4 下一条

广告投放| 广东互联网违法和不良信息举报中心|中国互联网举报中心|Github|申请友链|手机版|Code4App ( 粤ICP备15117877号-1 )