ios 图片自动轮播
#import "NYViewController.h"#define kImageCount 5@interface NYViewController () <UIScrollViewDelegate> @property (nonatomic, strong) UIScrollView *scrollView; @property (nonatomic, strong) UIPageControl *pageControl;@property (nonatomic, strong) NSTimer *timer; @end@implementation NYViewController//懒加载加载scrollView -(UIScrollView *)scrollView {if (_scrollView == nil) {_scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(10, 20, 300, 130)];_scrollView.backgroundColor = [UIColor redColor];[self.view addSubview:_scrollView];//contentSize//高度为0 只水平滚动self.scrollView.contentSize = CGSizeMake(kImageCount * _scrollView.bounds.size.width, 0);//取消弹簧效果_scrollView.bounces = NO;//取消滚动条_scrollView.showsHorizontalScrollIndicator = NO;//水平_scrollView.showsVerticalScrollIndicator = NO;//竖直//要分页_scrollView.pagingEnabled = YES;//设置代理_scrollView.delegate = self;}return _scrollView; }-(UIPageControl *)pageControl {if (_pageControl == nil) {//分页控件,本质上和scrollView没有任何关系,是两个独立的控件_pageControl = [[UIPageControl alloc]init];//总页数_pageControl.numberOfPages = kImageCount;//控件尺寸CGSize size = [_pageControl sizeForNumberOfPages:kImageCount];_pageControl.bounds = CGRectMake(0, 0, size.width, size.height);_pageControl.center = CGPointMake(self.view.center.x, 130);//设置颜色_pageControl.pageIndicatorTintColor = [UIColor redColor];_pageControl.currentPageIndicatorTintColor = [UIColor blackColor];[self.view addSubview:_pageControl];//添加监听方法/**在OC中,绝大多数“继承UIControl控件”,都可以监听UIControlEventValueChanged事件,只有button除外,button是点得,是touchup。。。*/[_pageControl addTarget:self action:@selector(pageChanged:) forControlEvents:UIControlEventValueChanged];}return _pageControl; }//分页控件的监听方法 -(void)pageChanged:(UIPageControl *)page {//根据页数,调整滚动视图中得图片位置contentOffsetCGFloat x = page.currentPage * self.scrollView.bounds.size.width;[self.scrollView setContentOffset:CGPointMake(x, 0) animated:YES]; }- (void)viewDidLoad {[super viewDidLoad];//设置图片for (int i = 0; i<kImageCount; i++) {NSString *imageName = [NSString stringWithFormat:@"img_%02d", i+1 ];UIImage *image = [UIImage imageNamed:imageName];UIImageView *imageView = [[UIImageView alloc] initWithFrame: self.scrollView.bounds];imageView.image = image;[self.scrollView addSubview:imageView];}//计算imageView的位置[self.scrollView.subviews enumerateObjectsUsingBlock:^(UIImageView *imageView, NSUInteger idx, BOOL *stop) {//调整x =》 origin =》frameCGRect frame = imageView.frame;frame.origin.x = idx * frame.size.width;imageView.frame = frame;}];//分页初始页数为0self.pageControl.currentPage = 0;//启动时钟 [self startTimer];}/**启动时钟*/ -(void)startTimer {self.timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(updateTimer) userInfo:nil repeats:YES];//添加运行循环 [[NSRunLoop currentRunLoop]addTimer:self.timer forMode:NSRunLoopCommonModes];}-(void)updateTimer {//页号发生变化//(当前页数 + 1) % 总页数int page = (self.pageControl.currentPage+1) % kImageCount;self.pageControl.currentPage = page;//调用监听方法。让滚动视图滚动 [self pageChanged:self.pageControl]; }#pragma mark - scrollView的代理方法//滚动视图停下来 -(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {// 停下来的当前页数,通过contentOffset获取当前偏移量NSLog(@"%@",NSStringFromCGPoint(scrollView.contentOffset));//计算页数int page = scrollView.contentOffset.x/scrollView.bounds.size.width;self.pageControl.currentPage = page;}/**抓住图片时,停止时钟,松手后,开启时钟*/ -(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {//停止时钟,停止后就不能在使用,如果要启用时钟,需要重新实例化 [self.timer invalidate]; }-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {//启动时钟 [self startTimer];} @end
转载于:https://www.cnblogs.com/jackson-leung/p/4690080.html
ios 图片自动轮播相关推荐
- iOS实现图片自动轮播展示
一.需要实现的效果如下图1,首页图片自动轮播展示,其中图片从网络异步加载,加载过程用风火轮显示加载中,如图2. 本文参考了以下博客文章: http://www.haodaima.net/art/268 ...
- 广告图片自动轮播控件
2019独角兽企业重金招聘Python工程师标准>>> 自定义广告轮播 自定义控件ImageCycleView 每个广告页的对象(包含具体显示图片.内容.id等) 自定义广告控件 I ...
- java图片轮播_java制作广告图片自动轮播控件
首页图片的轮播 /** * 广告图片自动轮播控件 * */ public class ImageCycleView extends LinearLayout { /** * 上下文 */ privat ...
- JavaScript实现图片自动轮播
目录 1.轮播图片 1.1图片切换功能 1.2定时器功能 1.3图片自动轮播实现 2.页面定时弹出广告 2.2 技术分析 2.3步骤分析 2.4代码实现 3.表单校验 3.1需求分析 3.2技术分析 ...
- 怎样实现banner自动播放html,纯CSS3实现banner图片自动轮播效果方式总结
自动轮播: 实现切换图片,图片循环播放:鼠标悬停某张图片, 则暂停切换.css 方法一.opacity控制透明度实现轮播效果 依照需求咱们选择用CSS3的animation动画进行实现:transit ...
- html5时间线图片自动轮播,js实现自动播放匀速轮播图
本文实例为大家分享了js实现自动播放匀速轮播图的具体代码,供大家参考,具体内容如下 函数封装:( 匀速运动函数) function animate(obj,target,step,speed){ cl ...
- 自动图片轮播php源码,js图片自动轮播代码分享(js图片轮播)
1.利用图片width显示位置来播放图片,技术:.offsetWidth .aBtn[i].index = i .setInterval() .oUl[0].style.left = .onclic ...
- JQuery实现图片自动轮播左右切换鼠标移入
首先 轮播的精髓就是在于图片的平滑滚动,下面图片应该能一下就看明白: 第一 我们将可视区控制在我们想呈现的内容的大小 第二 接着是在可视区内放入内容(图片): 第三 JQ效果实现 , 中下方小圆点(按 ...
- php中实现图片自动轮播,轻松实现javascript图片轮播特效_javascript技巧
本文实例介绍了javascript图片轮播特效的详细代码以及实现思路,分享给大家供大家参考,具体内容如下 还是先来看一看效果图: 具体代码: 一.HTML代码分析 此效果的层次结构比较清楚: 1. c ...
最新文章
- SpringBoot整合Grpc实现跨语言RPC通讯
- R语言ggplot2可视化箱图(boxplot)时忽视异常值(outlier)并重新分配坐标轴的范围是的可视化的箱图可以有效显示箱体实战
- java垃圾回收机制_JVM的垃圾回收机制——垃圾回收算法
- gdb中看内存(x命令)
- Android-FixBug热修复框架的使用及源码分析(不发版修复bug)
- 工业POE交换机使用中的常见问题汇总
- oracle分区表带入SQL语句,Oracle 分区表常用SQL语句 (转载)
- Maven构建分布式项目时子模块相互依赖打包技巧
- python字典文件,python-文件转字典,字典转文件
- php v9 邮箱登陆,PHPCMS v9会员登录支持Email登录的实现方法
- php中怎么让图片没有缓存,关于项目中图片缓存的问题
- RPC理论以及Dubbo的使用介绍
- 一段经典的 Java 风格程序 ( 类,包 )
- 用React实现基于Canvas的图片放大镜功能
- python扫描局域网ip_Python实现扫描局域网活动ip
- win7 去掉快捷方式小箭头
- Spark Container killed by YARN for exceeding memory limits. 11.1 GB of 11 GB physical memory used
- matlab调用CVX工具包
- 《精力管理》读书笔记——第二部分
- 用DTM实现网页转化跟踪,广告投放效果实时监测
热门文章
- 联合索引最左匹配原则成因
- Python gRPC 安装
- 关于C语言中的数组指针、指针数组以及二级指针
- Eclipse的编码
- oracle sqlserver 查看指定用户下面的表
- github下载源码也用命令进行安装包的联系
- Pytorch实现MNIST(附SGD、Adam、AdaBound不同优化器下的训练比较) adabound实现
- Conversion error:Jekyll::Converters::Scss encountered an error while converting css/main.scss
- 将人工智能模型压缩到微控制器中
- 各种经典透镜投影模型