1、创建ScrollerPageTool 工具

//
//  ScrollerPageTool.m
//  CIC
//
//  Created by lgy on 2022/1/22.
//#import "ScrollerPageTool.h"@implementation ScrollerPageTool/// 设置监听滑动的方向
/// @param scrollView  滑动的scrollView
- (void) setScrollViewDidScroll:(UIScrollView *)scrollView{if (scrollView.isTracking) {//判断左右滑动时if (scrollView.contentOffset.x < self.lastContentOffset ){//向右self.scrollDirectionLeft = YES;} else if (scrollView. contentOffset.x > self.lastContentOffset ){//向左self.scrollDirectionLeft = NO;}self.lastContentOffset = scrollView.contentOffset.x;}
}/// 设置开始惯性滑动时的处理方式
/// @param scrollView scrollView
- (void) setScrollViewWillBeginDecelerating:(UIScrollView *)scrollView{[self autoScroller:scrollView];
}/// 设置手指滑动结束后的处理方式
/// @param scrollView scrollView
/// @param decelerate 是否惯性滑动
- (void) setSrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{//自动if (!decelerate) {[self autoScroller:scrollView];}
}/// 滑动到自定位置
/// @param scrollView 滑动的UIScrollView
-(void) autoScroller:(UIScrollView *)scrollView{dispatch_async(dispatch_get_main_queue(), ^{CGFloat pageWidth = self.pageWidth;NSInteger index = scrollView.contentOffset.x / self.pageWidth;CGRect frame = scrollView.frame;if (self.scrollDirectionLeft) {[scrollView scrollRectToVisible:CGRectMake(index*pageWidth, 0, frame.size.width, frame.size.height) animated:true];}else {[scrollView scrollRectToVisible:CGRectMake((index+1)*pageWidth, 0, frame.size.width, frame.size.height) animated:true];}});
}@end

2、在 ScrolleView中 使用 ScrollerPageTool:

- (void)viewDidLoad {[super viewDidLoad];NSLog(@"%.5lf",powf(1.05, 400));NSLog(@"%.5lf",powf(2, 16));[self.view addSubview:self.coView];self.pageTool = [ScrollerPageTool new];self.pageTool.pageWidth = 320+10;//    self.coView.scrollEnabled = false;
}- (void)scrollViewDidScroll:(UIScrollView *)scrollView{[self.pageTool setScrollViewDidScroll:scrollView];
}- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{[self.pageTool setScrollViewWillBeginDecelerating:scrollView];
}- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{[self.pageTool setSrollViewDidEndDragging:scrollView willDecelerate:decelerate];
}

ScrollerPageTool.h

//
//  ScrollerPageTool.h
//  CIC
//
//  Created by lgy on 2022/1/22.
//#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>NS_ASSUME_NONNULL_BEGIN@interface ScrollerPageTool : NSObject@property(nonatomic,assign) BOOL scrollDirectionLeft;
@property (nonatomic,assign) CGFloat lastContentOffset;
@property (nonatomic,assign) CGFloat pageWidth;/// 设置监听滑动的方向
/// @param scrollView  滑动的scrollView
- (void) setScrollViewDidScroll:(UIScrollView *)scrollView;/// 设置开始惯性滑动时的处理方式
/// @param scrollView scrollView
- (void) setScrollViewWillBeginDecelerating:(UIScrollView *)scrollView;/// 设置手指滑动结束后的处理方式
/// @param scrollView scrollView
/// @param decelerate 是否惯性滑动
- (void) setSrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;@endNS_ASSUME_NONNULL_END

viewController

//
//  ViewController.m
//  CIC
//
//  Created by lgy on 2021/12/22.
//#import "ViewController.h"
#import "ScrollerPageTool.h"@interface ViewController ()<UICollectionViewDelegate,UICollectionViewDataSource>@property (nonatomic,strong) UICollectionView *coView;@property (nonatomic,strong) ScrollerPageTool *pageTool;@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];NSLog(@"%.5lf",powf(1.05, 400));NSLog(@"%.5lf",powf(2, 16));[self.view addSubview:self.coView];self.pageTool = [ScrollerPageTool new];self.pageTool.pageWidth = 320+10;//    self.coView.scrollEnabled = false;
}- (void)scrollViewDidScroll:(UIScrollView *)scrollView{[self.pageTool setScrollViewDidScroll:scrollView];
}- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{[self.pageTool setScrollViewWillBeginDecelerating:scrollView];
}- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{[self.pageTool setSrollViewDidEndDragging:scrollView willDecelerate:decelerate];
}-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{return CGSizeMake(320,200);
}- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section{return 18;
}- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"UICollectionViewCell" forIndexPath:indexPath];if (indexPath.row % 9 == 0) {cell.backgroundColor = UIColor.brownColor;}else if (indexPath.row % 9 == 1) {cell.backgroundColor = UIColor.blueColor;}else if (indexPath.row % 9 == 2) {cell.backgroundColor = UIColor.grayColor;}else if (indexPath.row % 9 == 3) {cell.backgroundColor = UIColor.yellowColor;}else if (indexPath.row % 9 == 4) {cell.backgroundColor = UIColor.greenColor;}else if (indexPath.row % 9 == 5) {cell.backgroundColor = UIColor.redColor;}else if (indexPath.row % 9 == 6) {cell.backgroundColor = UIColor.blackColor;}else if (indexPath.row % 9 == 7) {cell.backgroundColor = UIColor.cyanColor;}else if (indexPath.row % 9 == 8) {cell.backgroundColor = UIColor.darkGrayColor;}return cell;
}-(UICollectionView *) coView{if (!_coView) {UICollectionViewFlowLayout *flowLayout= [[UICollectionViewFlowLayout alloc]init];flowLayout.scrollDirection = UICollectionViewScrollDirectionHorizontal;flowLayout.minimumLineSpacing = 10;_coView = [[UICollectionView alloc] initWithFrame:CGRectMake(0, 200, self.view.frame.size.width, 200) collectionViewLayout:flowLayout];_coView.dataSource = self;_coView.delegate = self;_coView.bounces = false;_coView.showsVerticalScrollIndicator = NO;_coView.showsHorizontalScrollIndicator = NO;//_coView.pagingEnabled = YES;_coView.backgroundColor = [UIColor clearColor];[_coView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"UICollectionViewCell"];}return _coView;
}@end

UIScrollView 分页滚动,简单代码 tool相关推荐

  1. html5blog简单特效代码,个人博客网站背景视觉滚动特效代码

    之前一直注重模块的视觉滚动特效以至于忽略了图片背景的视觉差滚动特效,今天把小清新主题更新了图片背景视觉差特效,记录下代码,有喜欢的自己参考教程自己动手操作下.这是在网络上找到的一款超级轻量级的jQue ...

  2. 多层 UIScrollView 嵌套滚动解决方案

    原文地址:jiar.me/article/Mul- 本文旨在对于SegementSlide库实现原理的讲解,有兴趣的同学,欢迎前往Github地址浏览. 背景 如今的app中,越来越多地采用如下图所示 ...

  3. mysql多表联查分页_sqlserver多表联合查询和多表分页查询的代码讲解

    sqlserver多表联合查询和多表分页查询的代码讲解 发布时间:2020-05-14 14:42:07 来源:亿速云 阅读:700 作者:Leah 这篇文章主要为大家详细介绍了sqlserver多表 ...

  4. 产品图片无缝水平滚动效果代码

    产品图片无缝水平滚动效果代码: 在众多的网站都有这样的效果,那就是产品图片可以不间断的无缝滚动,效果挺美观的,也给静态的页面增加了几分动感,也便利了浏览者查看产品,算是比较好的效果吧,下面就介绍一下如 ...

  5. unity实现图片轮播效果_Unity3D实现列表拖拽轮播分页滚动功能

    在使用UGUI的ScrollRect做列表滚动时,会有分页滚动的需求,基于ScrollRect写了一个,只需要一个ScrollRect组件即可 效果截图: Threshold为滚动阈值,当翻页的长度达 ...

  6. Javascript设置滚动条向上滚动的方法;JS设置滚动条滚动的代码

    很久就没有碰前端的后果就是,自己被公司叫来帮忙自己结果啥都会,但是就想不起怎么操作 画布哆嗦 咱们直接来看代码 重点一:获取滚动条Y轴的数据 这个方法有很多,我就不一一讲述了,毕竟结果都一样就好 直接 ...

  7. html语言字体上下滚动代码,div+css+jquery公告栏垂直(上下)文字单行滚动特效代码(三种样式)...

    网站公告栏一般采用滚动形式,随着jquery的出现,特效做起来更加简单,所以目前大多数网站都有自己的公告栏目,采用文字滚动的形式,今天来分享几个垂直公告文字滚动特效,分别是全面版,常用版,以及极简版! ...

  8. HTML滚动文字代码 marquee标签

     HTML滚动文字代码marquee标签 <marquee style="WIDTH: 388px; HEIGHT: 200px"scrollamount="2 ...

  9. 企业建站代码--HTML滚动文字代码(垂直)

    <marquee style="WIDTH: 388px; HEIGHT: 200px" scrollamount="2" direction=" ...

最新文章

  1. C# 的EF框架怎么连接Oracle数据库
  2. (转) Docker EE/Docker CE简介与版本规划
  3. 计算机基础--认识CPU
  4. SAP UI5 视图如何使用工程里的 sample data 作为 JSON model 的数据源
  5. .NET 和 Mono 的一点历史
  6. 最简单的SpringCloud教程 | 第二篇: 服务消费者(rest+ribbon)(Finchley版本)
  7. Windows server 2003域控直接迁移到2012[史上最详细]
  8. 程序员们,节日快乐!
  9. adbi学习:so hook实现机制
  10. BZOJ.1312.[Neerc2006]Hard Life(分数规划 最大权闭合子图)
  11. mac的一些使用事项
  12. VS2005无法调试,绑定句柄无效问题的解决方法
  13. visio付款流程图_visio画程序流程图(转)
  14. 面试测试工程师遇到的面试题——非技术方面
  15. winpe修复计算机无法启动,巧用PE修复系统启动故障
  16. 1899 用迭代法求平方根
  17. 计算机辅助绘图方式,计算机辅助绘图技巧
  18. 各大有名库的介绍(转)
  19. [线性控制理论]关于Laplace变换中求导运算的结果推导
  20. iPhone 5s--- iPhone x越狱详细教程,MacOS系统

热门文章

  1. Spring Boot + Vue前后端分离项目,Maven自动打包整合
  2. 部署Vista(1):认识Windows AIK
  3. 如何管理ERP系统中的物料补货?
  4. Android安装Charles证书(华为手机测试)
  5. 华为存储学习笔记-6
  6. 华为nova8pro和nova9pro的区别
  7. 阿里AI天池大赛-资金流入流出预测-基于周期因子的时间序列预测
  8. IntelliJ IDEA 插件下载安装教程 在线安装和本地安装教程
  9. 马自达的EV,在日本国内的发售目标保守每年500台
  10. C++入门——上卷(引用详解)