美文网首页IOS知识积累
iOS SJPageViewController

iOS SJPageViewController

作者: changsanjiang | 来源:发表于2020-02-09 20:08 被阅读0次

    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

    相关文章

      网友评论

        本文标题:iOS SJPageViewController

        本文链接:https://www.haomeiwen.com/subject/oijnxhtx.html