iOS开发之图片轮播器

iOS开发-图片轮播器控件 一.简介 图片轮播器在App中是一个最常见的功能,一般放在首页的顶或中部。 图片轮播器最基本功能:①定时循环无限滚动;②自由拖拽滚动;③点击跳转。 二.实现思路 实现图片轮播器有很多种方法,本文将采用最简单易懂的实现方法:一个 UIScrollView + 多个 UIImageView 或 UIButton。 1、首先根据传入的数据进行配置,假设传入三张图片 [A,B,C],将数组配置为... 阅读详情

本文主要介绍图片轮播器的实现。

主要思路:利用UICollectionView(三张图片)

1)        UICollectionView的尺寸和一个Item的尺寸相同,Item中有一个和Item相同尺寸的UIImageView。

2)        UICollectionView有N组Item。每组有三个Item。

3)        UICollectionView初始完毕后就默认显示中间那组的第0个Item。

如图:

4)        添加计时器。当UICollectionView自动滚动的时候,只显示中间组的三张图片,当item>2的时候,就调用下面这个方法,让UICollectionView滚动到中间组的第0个Item。

// 初始化时,让collectionView自动滚到中间那一组
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:0inSection:HXMaxSection * 0.5];
[self.collectionViewscrollToItemAtIndexPath:indexPathatScrollPosition:UICollectionViewScrollPositionLeft animated:NO];

5)        当手动滚动图片的时候,移除计时器;当手动滚动结束的时候,载将计时器添加上去。这里要调用UIScrollView的两个代理方法。

我做的时候是这个思路,当我实现的过程中,我觉得重点还是在计时器方法中。在该方法要判断当前显示的是哪一张图片,也要做边界图片处理。

 

下面上代码:(这里我只写3组Item,每组3张图片)

首先,创建UICollectionView(背景颜色:黄色),我这里用storyboard创建,拖一个UICollectionView,并在控制器中拥有该属性。

再自定义cell,cell中只有UIImageView控件。(xib创建)

在控制器中先注册一个这个cell,并实现UICollectionView的数据源方法。

在viewDidLoad方法中:self.newses存放图片名的数组

// 注册一个从xib中加载出来的cell
[self.collectionView registerNib:[UINib nibWithNibName:@"HXImageCell" bundle:nil] forCellWithReuseIdentifier:@"Cell"];
    
// 初始化时,让collectionView自动滚到中间那一组
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:0 inSection:HXMaxSection * 0.5];
[self.collectionView scrollToItemAtIndexPath:indexPath atScrollPosition:UICollectionViewScrollPositionLeft animated:NO];

实现数据源方法:

#pragma mark - UICollectionViewDataSource
- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView {

    return HXMaxSection;
}

- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {
    return self.newses.count;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath {

    HXImageCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" forIndexPath:indexPath];
    
    cell.imageView.image =[UIImage imageNamed: self.newses[indexPath.item]];
    
    return cell;
    
}

到此运行程序,显示效果:

但是此时,图片还不能自动播放。

下面我们要添加一个计时器,来实现图片的自动播放。(一启动程序就自动播放,要在viewDidLoad方法中添加计时器)

添加计时器代码:

/**
 *  添加计时器
 */
-  (void)addTimer {
    if (self.timer) return;
    // 创建计时器
    NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(nextPage) userInfo:nil repeats:YES];
    
    // 添加计时器到runLoop
    [[NSRunLoop mainRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];
    self.timer = timer;
}

/**
 *  移除计时器
 */
- (void)removeTimer {
    [self.timer invalidate];
    self.timer = nil;
}

/**
 *  计时器执行的方法
 */
- (void)nextPage {
    // 获得当前正在显示的位置(比如第3组、第2个cell,快显示完了)
    NSIndexPath *currentIndexPath = [[self.collectionView indexPathsForVisibleItems] lastObject];
    
    // 马上显示到中间那组的对应的cell(即第2组,第2个cell)
    NSIndexPath *midIndexPath = [NSIndexPath indexPathForItem:currentIndexPath.item inSection:HXMaxSection * 0.5];
    [self.collectionView scrollToItemAtIndexPath:midIndexPath atScrollPosition:UICollectionViewScrollPositionLeft animated:NO];
    // 下一张
    NSInteger nextSection = midIndexPath.section;
    NSInteger nextItem = midIndexPath.item + 1;
    if (nextItem >= self.newses.count) {
        nextItem = 0;
        nextSection ++;
    }
    // cell滚动到下一个位置
    NSIndexPath *nextIndexPath = [NSIndexPath indexPathForItem:nextItem inSection:nextSection];
    [self.collectionView scrollToItemAtIndexPath:nextIndexPath atScrollPosition:UICollectionViewScrollPositionLeft animated:YES];
    
}

计时器方法中的执行步骤是:

得到当前显示的图片位置之后,马上让UICollectionView把图片滚动到中间组的那张图片。然后再对中间组的图片进行加1处理。

这个时候图片就能自动滚动了。现在要对它进行手动滚动处理。

很简单,实现UIScrollView的两个代理方法就行:

#pragma mark - scrollview delegate
/**
 *  手动滚动开始时候调用
 */
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
    // 移除计时器
    [self removeTimer];
    
}

/**
 *  手动滚动结束时候调用
 */
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
    
    // 添加计时器
    [self addTimer];
    
}

现在大功告成。当用户在滚动的时候,计时器就关闭,自动滚动就关闭,如果用户一直滑动,可能会造成滚到尽头的效果,所以我们可以返回多一点组数。让用户滚到累了为止;只要用户停止滚动,UICollectionView就自动将图片设置为中间组的对应图片。这样就可以简单实现无限滚动的效果了。






iOS开发 - UIPageControl实现分页图片轮播器 分页相关属性只要将UIScrollView的pageEnabled属性设置为YES,UIScrollView会被分割成多个独立页面,里面的内容就能进行分页展示一般会配合UIPageControl增强分页效果,UIPageControl常用属性如下 一共有多少页 @property(nonatomic) NSInteger numberOfPages;当前显示的页码 @property(nonato 阅读详情

相关推荐

深入理解iOS轮播图实现与优化

本文还有配套的精品资源,点击获取 简介:本教程介绍了如何在iOS应用中实现轮播图功能,包括不重复播放、平滑过渡、点击事件处理等关键特性。通过讲解UIScrollView的基础使用,添加自定义逻辑来实现图片内容的循环展示。详细内容涵盖内容尺寸设置、UIImageView添加、平滑过渡动画实现、自动播放控制、无限循环轮播技巧、性能优化策略以及UI布局设计。教程旨在帮助开发者全面...

weixin_35752645的博客 1702

iOS开发----轮播图实现

()return pc}()在代理方法的第二个实现方法里我们所使用的cell是自定义的,这里的cell是UICOllectionViewCell轮播图3-优快云直播。

qq_74177011的博客 2871

ios-图片轮播器(无限滚动).zip

点击当前轮播图片block回调 基于UIView封装,工作中可以拿来直接用 一句代码创建,支持本地图片和网络图片

【亲测免费】 推荐一款超实用的iOS图片轮播器 - SBCycleScrollView

推荐一款超实用的iOS图片轮播器 - SBCycleScrollView 在开发iOS应用时,我们经常需要集成图片或文字轮播的功能,这时一款易于使用且功能丰富的轮播器就显得至关重要。今天,我要向大家推荐的是SBCycleScrollView,一个由Swift编写的高效图片轮播库,它不仅支持网络图片、本地图片,还能够处理纯文本内容。 项目介绍 SBCycleScrollView是一款轻量级、高性能的...

gitblog_00080的博客 847

ios-用一张ImageView实现无限轮播条(支持自动、点击).zip

//添加banner图 TranstionScrollView * banner =[[TranstionScrollView alloc]initWithFrame:CGRectMake( 0, 101,CGRectGetWidth(self.view.frame), 300) placeholder:[UIImage imageNamed:@"default"]]; [banner setSelectImageBlock:^(NSInteger index){ NSLog(@"点击%d",index); }]; [self.view addSubview:banner]; //2秒后加载本地图片 dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ NSArray * array = @[@"0",@"1",@"2",@"3"];//本地图片数据 [banner setImageArrayWithArray:array]; });

ios-轮播器Demo.zip

轮播器Demo

推荐项目:iOS 图片轮播利器 - LLCycleScrollView

推荐项目:iOS 图片轮播利器 - LLCycleScrollView 项目简介 LLCycleScrollView 是一个专为iOS开发者设计的高效、灵活的图片轮播视图组件,它由开发者LvJianfeng精心打造并维护,尽管该项目目前处于停止更新的状态,但其强大的功能和广泛的应用场景依然值得我们深入探讨与使用。通过简单的API设计,LLCycleScrollView轻松实现了图片的自动轮播,兼...

gitblog_00875的博客 658

ios-无限轮播器.zip

代码更新地址:https://github.com/NSDengChen/DCPicScrollView.git

iOS开发——高级篇——图片轮播及其无限循环效果

平时APP中的广告位、或者滚动的新闻图片等用到的就是图片轮播这种效果,实现方式主要有两种,一种是ScrollView+ImageView,另一种则是通过CollectionView,今天总结的是ScrollView这种方式。 1.图片轮播效果实现 主要实现思路是:根据图片总数及宽高设置好ScrollView的大小,每切换一张图片相当于在ScrollView上进行一个图片宽度的移动行为,并加入定...

weixin_30443895的博客 286

IOS 开发之网络图片轮播图的实现

IOS 开发之网络图片轮播图的实现 截图 1.使用 LJPhotoGroupView *_ljPhotoGroupView = [[LJPhotoGroupView alloc]initWithItem:self.ljUrlArray]; _ljPhotoGroupView.backgroundColor = [UIColor blackColor]; _ljPhotoGroupView.frame = CGRectMake(0, 0, kDEVICEWIDTH, kDEVICEHEIGHT); [_ljPhotoGroupView showHintView:self]; 2.源码 #

Python实战:用SkillMetrics库5分钟搞定泰勒图绘制(附完整代码)

本文详细介绍了如何使用Python的SkillMetrics库快速绘制专业泰勒图,以直观对比多个模型的预测性能。通过整合相关系数、标准差和中心化均方根误差三个核心指标,该工具能帮助数据科学家和研究者高效完成模型评估与可视化,提升分析报告质量。文章提供了从环境配置、数据准备到高级定制与子图对比的完整代码示例。

7z8x2c4v6b9的博客 371

[iOS开发项目-10] 图片轮播器

本项目是取自传智播客的教学项目,加入笔者的修改和润饰。1. 项目名称:图片轮播器2. 项目截图展示3. 项目功能 打开程序实现图片自动滚动。 能够左右拖动图片,能静止图片滚动。 3. 项目代码#import "ViewController.h"#define kImageCount 5@interface ViewController () <UIScrollViewDelegate>@proper

孙世杰的博客 1092

手把手教你用6轴IMU跑通LIO-SAM:参数配置与代码修改保姆级教程

本文提供了一套完整的6轴IMU适配LIO-SAM的解决方案,包括参数配置与代码修改的详细步骤。从理解6轴与9轴IMU的关键差异入手,逐步指导如何调整核心配置文件params.yaml、重构utility.h关键函数、优化mapOptimization.cpp的位姿融合逻辑,并给出编译验证与性能调优建议,帮助开发者快速实现6轴IMU在LIO-SAM中的稳定运行。

weixin_28717807的博客 357

IOS开发基础之图片轮播器-12

IOS开发基础之图片轮播器-12 核心代码 // // ViewController.m // 12-图片轮播器 // // Created by 鲁军 on 2021/2/2. // #import "ViewController.h" @interface ViewController () <UIScrollViewDelegate> @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; @propert

A1521315qwss的博客 282

从入门到实战:rkhunter(Rootkit猎手)在Linux服务器安全运维中的部署与自动化监控

本文详细介绍了rkhunter(Rootkit猎手)在Linux服务器安全运维中的部署与自动化监控方法。从Rootkit的危害性入手,讲解了rkhunter的安装、配置及实战应用,包括如何建立基准、优化定时任务方案以及智能告警处理。通过多级过滤脚本和系统级联动,帮助运维人员高效识别和应对Rootkit威胁,提升服务器安全性。

weixin_28715953的博客 238

【异常】Cursor报错We‘re having trouble connecting to the model provider. This might be temporary

在使用Cursor编辑器进行AI交互操作时,界面弹出如下报错提示,导致无法正常调用模型服务,影响使用流程:We’re having trouble connecting to the model provider. This might be temporary - please try again in a moment. 该报错核心含义为Cursor编辑器无法正常连接至背后的AI模型服务提供商(如OpenAI、Anthropic等),属于连接类异常,并非编辑器本身运行故障。经排查,该报错不具备破坏性,仅

奶爸的编程之路,也就一周冷个三天 1690

图片轮播c语言,IOS开发之UIScrollView实现图片轮播器的无限滚动

IOS开发之UIScrollView实现图片轮播器的无限滚动简介在现在的一些App中常常见到图片轮播器,一般用于展示广告、新闻等数据,在iOS内并没有现成的控件直接实现这种功能,但是通过UIScrollView的允许分页设置,可以实现滚动轮播的功能。轮播原理UIScrollView对象有pagingEnable成员,如果设置为YES,那么每一个scrollView尺寸这么大的区域就会被当作一页,在...

weixin_33642922的博客 345

《QGIS快速入门与应用基础》【专栏完整目录】

《QGIS快速入门与应用基础》第一卷专栏完整目录,覆盖 001–328 全部篇目与附录,逐篇可跳转。

LuckyHanMo的博客 1299

IOS开发之——图片轮播器(14)

一 步骤 scrollView getter方法懒加载只指定了大小,添加到视图 viewDidLoad中添加图像,并且计算位置 运行观察效果,修改scrollView的属性....... 实例化UIPageControl 因为分页控件和滚动视图是分离的,因此监听滚动停止代理方法,修改分页控件的页数 将UIPageControl定义成属性,并且添加监听方法 实现监听方法,页数变化后,修改scrollView的位置 添加时钟,调用分页控

我的博客 792

我正用AI Agent重构传统GIS 核心功能,说大白话做空间分析

GeoAI-UP项目通过AI Agent技术实现自然语言驱动的空间分析,核心创新包括: 意图识别层:通过LLM理解用户需求,自动拆解为可执行目标 智能任务规划:动态生成分析流程,处理复杂依赖关系 统一算子架构:采用标准化接口封装200+空间分析功能 可视化工作流。

专注GIS软件开发。 496

用urdf给自己的ROS小车编写模型

3.3 使用urdf编写自己的ROS小车模型 3.3.1 常见的ROS小车结构有哪些? 下面就是常见的ROS小车,相信在大家的脑海里已经有了自己小车的样子,下面我和大家一起使用urdf对ros小车建模。 这里只对urdf进行简单介绍,然后就带大家使用urdf最基础的标签,建立机器人的urdf机器人模型。关于更多细节,请参看官网:http://wiki.ros.org/urdf/Tutorials 3.3.2 什么是urdf?建模的原因? 什么是urdf? URDF(Unified Robot Descri

「小白学移动机器人」一个专注分享移动机器人相关知识的公众号! 1万+

iOS开发008 无限循环自动图片轮播器

SDCycleScrollView https://github.com/gsdios/SDCycleScrollView 无限循环自动图片轮播器(一步设置即可使用) // 网络加载图片的轮播器 cycleScrollView.imageURLStringsGroup = imagesURLStrings; // 本地加载图片的轮播器 SDCycle

moVing_BriCk的博客 879

【CAN总线测试】——使用VH6501 进行Busoff快慢恢复测试

即在IDBase中填标准帧11位二进制ID,如果不满11位,高位补零,凑齐11位,并将下方CurrTriggerField设置干扰前一位AckSlot位,Triggeroffset设置为0。首先确认环境支持VN6501,6501硬件连接成功后,工程的小闪电是正常黄色状态,若是灰色证明缺少License,或者软件安装环境不正确。填写干扰报文ID、干扰位置 注意这里的干扰位置是实际干扰的前一位,TriggerOffset表示偏移量,可以干扰某个字节的具体位.找到并打开Panel后,开启工程,并且配置面板。

LOVE135149的博客 5629

iOS 简单快速开发图片轮播器(第三方SDCycleScrollView)

一:关于图片轮播器 以前都是自己写图片轮播器,可以使UIiscrollerView也可以使用UIcollectionView,但是不管是使用UIiscrollerView还是使用UIcollectionView实现过程都略显繁琐,今天给大家介绍一个简单好用的第三方框架SDCycleScrollView来实现图片轮播器。GitHub链接地址:https://github.com/gsdios/

西毒 2233

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【iOS开发】关于图片轮播器的实现代码

@interface ViewController () @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; @property (weak, nonatomic) IBOutlet UIPageControl *pageShow; @property(strong, nonatomic)NSTimer *Timer;

沸沸腾的专栏 702

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

iOS 简单快速开发图片轮播器(第三方SDCycleScrollView)

一:关于图片轮播器 以前都是自己写图片轮播器,可以使UIiscrollerView也可以使用UIcollectionView,但是不管是使用UIiscrollerView还是使用UIcollectionView实现过程都略显繁琐,今天给大家介绍一个简单好用的第三方框架SDCycleScrollView来实现图片轮播器。GitHub链接地址:https://github.com/gsdios/SD

ZhengYanFeng1989的博客 1万+

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

上一篇: iOS开发之图片拉伸
下一篇: iOS开发之UIApplication的小功能
shxwork
博客等级 码龄12年 6粉丝 96原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值