UIScrollView现实自动循环滚动
- #import "RootViewController.h"
- #define width [UIScreen mainScreen].bounds.size.width
- #define heigthY 150
- #define scrollTime 1
- @interface RootViewController ()<UIScrollViewDelegate>
- {
- UIScrollView *_scrollView;
- NSMutableArray *imageArray;
- UIPageControl *pageControl;
- }
- @end
- @implementation RootViewController
- - (void)dealloc
- {
- imageArray = nil;
- [super dealloc];
- }
- - (void)loadView
- {
- [super loadView];
- _scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(, , width, heigthY)];
- _scrollView.pagingEnabled = YES;
- _scrollView.delegate = self;
- // 开始时选中第二个图片 图片的布局[3-1-2-3-1]
- _scrollView.contentOffset = CGPointMake(width, );
- // 隐藏水平滚动条
- _scrollView.showsHorizontalScrollIndicator = NO;
- pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(width - ,heigthY - , , )];
- // 设置pageControl不支持用户操作
- pageControl.userInteractionEnabled = NO;
- pageControl.currentPageIndicatorTintColor = [UIColor redColor];
- pageControl.pageIndicatorTintColor = [UIColor greenColor];
- [self.view addSubview:_scrollView];
- [self.view addSubview:pageControl];
- [_scrollView release];
- [pageControl release];
- }
- - (void)viewDidLoad {
- [super viewDidLoad];
- imageArray = [[NSMutableArray alloc] init];
- NSArray *tempArray = @[@"1-3.jpg",@"1-1.jpg",@"1-2.jpg",@"1-3.jpg",@"1-1.jpg"];
- [imageArray addObjectsFromArray:tempArray];
- // 根据imageArray的数量设置_scrollView的内容大小
- _scrollView.contentSize = CGSizeMake(width * imageArray.count, heigthY);
- pageControl.numberOfPages = imageArray.count - ;
- // 给_scrollView添加图片
- [self addImagesWithScrollView];
- // 添加定时器
- NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:scrollTime target:self selector:@selector(automateScroll) userInfo:nil repeats:YES];
- }
- // 每隔scrollTime秒就滚动一次
- - (void)automateScroll
- {
- // 因为开始时出现的图片是imageArray中的第二张图片,后面求余后还加1,使得contentOffset为2*width
- static int contentOffsetX = ;
- // 为了偏移量始终在(1 至 imageArray.count-2)*width中,((contentOffsetX % (imageArray.count - 2))求余得到的数值在 0~imageArray.count-3中, + 1后让数值保持在 1 至 imageArray.count-2 中
- _scrollView.contentOffset = CGPointMake(((contentOffsetX % (imageArray.count - )) + ) *width, );
- contentOffsetX ++;
- NSLog(@"==%d",contentOffsetX);
- }
- /**
- * 给scrollView添加图片
- */
- - (void)addImagesWithScrollView
- {
- for (int i = ; i < imageArray.count; i++) {
- UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:imageArray[i]]];
- imageView.frame = CGRectMake(i * width, , width, heigthY);
- [_scrollView addSubview:imageView];
- [imageView release];
- }
- }
- //#pragma mark - UIScrollViewDelegate的方法
- - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
- {
- int imageIndex = scrollView.contentOffset.x / width;
- if (imageIndex == ) {
- // 滚到第一张图片时,就跳转到倒数第二张图片
- [_scrollView scrollRectToVisible:CGRectMake((imageArray.count - )*width, , width, heigthY) animated:NO];
- }else if (imageIndex == imageArray.count - ){
- // 滚动到最后一张图片时,就跳转到第二张图片
- [_scrollView scrollRectToVisible:CGRectMake(width, , width, heigthY) animated:NO];
- }
- }
- /**
- * 设置pageControl的当前页
- */
- - (void)scrollViewDidScroll:(UIScrollView *)scrollView
- {
- // 加0.5是为了用户体验好些,滑动过程中哪张图片占优就显示占优图片对应的下标
- int imageIndex = scrollView.contentOffset.x / width + 0.5;
- if (imageIndex == ) {
- // 设置相应的下标(使之减1后与pageControl的下标相对应)
- imageIndex = (int)imageArray.count - ;
- }else if (imageIndex == imageArray.count - ){
- // 设置相应的下标(使之减1后与pageControl的下标相对应)
- imageIndex = ;
- }
- pageControl.currentPage = imageIndex - ;
- }
- @end
UIScrollView现实自动循环滚动的更多相关文章
- UIScrollView实现自动循环滚动广告
实现效果如下: 功能说明: 程序运行,图片自动循环播放,采用定时器实现; 当用户用手势触摸滑动时,定时器的自动播放取消,停止触摸时,自动无限播放; 代码如下 : 采用封装视图,外部进行调用即可: 1. ...
- IOS实现自动循环滚动广告--ScrollView的优化和封装
一.问题分析 在许多App中,我们都会见到循环滚动的视图,比如广告,其实想实现这个功能并不难,用ScrollView就可以轻松完成,但是在制作的过程中还存在几个小问题,如果能够正确的处理好这些小问题, ...
- 使用Recyclerview实现图片水平自动循环滚动
简介: 本篇博客主要介绍的是如何使用RecyclerView实现图片水平方向自动循环(跑马灯效果) 效果图: 思路: 1.准备m张图片 1.使用Recyclerview实现,返回无数个(实际Inter ...
- 自动循环滚动ScrollView
// // SBCycleScrollView.h // SBCycleScrollView // // Created by luo.h on 15/7/12. // Copyright (c) 2 ...
- ListView的自动循环滚动显示
最近项目里需要做评价内容的循环滚动显示,一开始想到的就是定时器.后来查了资料才知道ListView里面有个函数smoothScrollToPosition(position),瞬间觉得简单了很多.首先 ...
- item上下自动循环滚动显示
//li 上下滚动 (function($){ $.fn.extend({ Scroll:function(opt,callback){ //参数初始化 if(!opt) var opt={}; va ...
- IOS无限自动循环滚动banner(源码)
本文转载至 http://blog.csdn.net/iunion/article/details/19080259 目前有很多APP都开始使用一些滚动banner,我自己也做了一个,部分算法没有深 ...
- UIScrollView循环滚动1
现在基本每一个商业APP都会有循环滚动视图,放一些轮播广告之类的,都是放在UIScrollView之上.假如我要实现N张图片的轮播,我借鉴了几个博文,得到两种方法实现: [第一种]:如下图(图片来源于 ...
- 使用UIScrollView 结合 UIImageView 实现图片循环滚动
场景: 在开发工作中,有时我们需要实现一组图片循环滚动的情况.当我们使用 UIScrollView 结合 UIImageView 来实现时,一般 UIImageView 会尽量考虑重用,下面例子是以( ...
随机推荐
- bgcolor RGB 和16进制之间的转换,16进制转RGB,源码
<p>bgcolor RGB 和16进制之间的转换,16进制转RGB,源码例如:<br /> 输入 201,255,201 转换成 #C9FFC9</p> < ...
- visual assist(VA)设置快捷键(其它安装的插件设置快捷键也在这里)
安装完visual assist后发现快捷键无法使用纠结,然后找如何去设置快捷建以此记录一下: 在Tools-->customize-->Keyboard-->Add-ins 常用的 ...
- Spring MVC配置文件的三个常用配置详解
转自:http://www.cnblogs.com/benwu/articles/5162614.html Spring MVC项目中通常会有二个配置文件,sprng-servlet.xml和appl ...
- Node.Js and Mongoose
Mongoose官方API,我做完之后整理出来的心得. ONE· Getting Started First be sure you have MongoDB and Node.js installe ...
- Cash Machine(多重背包二进制转换)
个人心得:多重背包,自己根据转换方程写总是TLE,后面去网上看了二进制转换,不太理解: 后面仔细想了下,用自己的思想理解下把,就是将对应number,cash总和用二进制拆分, 然后全部装入到一个数组 ...
- 基于spring及zookeeper的dubbo工程搭建
一.生产者搭建 新建一个maven工程,勾选Create a simple project Packaging方式选择jar包的方式. 修改pom.xml文件: <project xmlns=& ...
- dockerfile http_php
FROM centos6.6-php5.5:0.0.1 MAINTAINER syberos:wangmo RUN mv /etc/php.ini /etc/php.ini.bak COPY ./ph ...
- TX2上安装spi和uart驱动
替换/boot目录下的Image文件 重新烧写dtb文件.烧写方式参考. 文件下载
- 获取APK的package名和activity名
使用 aapt dump badging + 需要安装的APK
- java代码输出1到100的质数
总结:循环,循环.. package com.dfd; import java.util.Scanner; //输出0到100的质数 //要判断当到100时候,等于2的直接输出,能被2整除的不输出, ...