UIScrollView现实循环滚动
#import "RootViewController.h" #define width [UIScreen mainScreen].bounds.size.width
#define heigthY 150 @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];
} /**
* 给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 = imageArray.count - ;
}else if (imageIndex == imageArray.count - ){
// 设置相应的下标(使之减1后与pageControl的下标相对应)
imageIndex = ;
}
pageControl.currentPage = imageIndex - ;
}
@end
UIScrollView现实循环滚动的更多相关文章
- UIScrollView 图片循环滚动
1:假如有6个图片:那个,Scrollview的大小加 7 个图片的大小 2: //ImageScrollView; UIScrollView *imageScroll = [[UIScrollVie ...
- UIScrollView循环滚动1
现在基本每一个商业APP都会有循环滚动视图,放一些轮播广告之类的,都是放在UIScrollView之上.假如我要实现N张图片的轮播,我借鉴了几个博文,得到两种方法实现: [第一种]:如下图(图片来源于 ...
- 使用UIScrollView 结合 UIImageView 实现图片循环滚动
场景: 在开发工作中,有时我们需要实现一组图片循环滚动的情况.当我们使用 UIScrollView 结合 UIImageView 来实现时,一般 UIImageView 会尽量考虑重用,下面例子是以( ...
- UIScrollView 循环滚动,代码超简单
如今非常多应用里面多多少少都用到了循环滚动,要么是图片.要么是view,或者是其它,我总结一下,写了个demo分享给大家. 先看代码之后在讲原理: 1.创建一个空的项目(这个我就不多说了). 2.加入 ...
- UIScrollView实现自动循环滚动广告
实现效果如下: 功能说明: 程序运行,图片自动循环播放,采用定时器实现; 当用户用手势触摸滑动时,定时器的自动播放取消,停止触摸时,自动无限播放; 代码如下 : 采用封装视图,外部进行调用即可: 1. ...
- IOS实现自动循环滚动广告--ScrollView的优化和封装
一.问题分析 在许多App中,我们都会见到循环滚动的视图,比如广告,其实想实现这个功能并不难,用ScrollView就可以轻松完成,但是在制作的过程中还存在几个小问题,如果能够正确的处理好这些小问题, ...
- NGUI实现的一套不同大小 Item 的循环滚动代码
测试: 数据 & Item 的 Ctrl : using UnityEngine; public class ScrollViewItemData { public int index; p ...
- Jquery制作--循环滚动列表
自己模仿JQ插件的写法写了一个循环滚动列表插件,支持自定义上.下.左.右四个方向,支持平滑滚动或者间断滚动两种方式,都是通过参数设置.JQ里面有些重复的地方,暂时没想到更好的方法去精简.不过效果还是可 ...
- marquee 实现首尾相连循环滚动效果
<marquee></marquee>可以实现多种滚动效果,无需js控制.使用marquee标签不仅可以滚动文字,也可以滚动图片,表格等 marquee标签不是HTML3.2 ...
随机推荐
- LeetCode OJ:Invert Binary Tree(反转二叉树)
Invert a binary tree. 4 / \ 2 7 / \ / \ 1 3 6 9 to 4 / \ 7 2 / \ / \ 9 6 3 1 Trivia:This problem was ...
- 剑指offer--20.矩形覆盖
链接:https://www.nowcoder.com/questionTerminal/72a5a919508a4251859fb2cfb987a0e6来源:牛客网 @DanielLea 思路分析: ...
- nyoj-1092-数字分隔(二)
java大法好啊 思路:单独拿出整数部分分隔 题目链接 import java.math.BigDecimal; import java.util.Scanner; public class Main ...
- Express+Mongoose(MongoDB)+Vue2全栈微信商城项目全记录(二)
用mogoose搭建restful测试接口 接着上一篇(Express+Mongoose(MongoDB)+Vue2全栈微信商城项目全记录(一))记录,今天单独搭建一个restful测试接口,和项目前 ...
- Linux命令学习(17):ifconfig命令
版权声明更新:2017-05-22博主:LuckyAlan联系:liuwenvip163@163.com声明:吃水不忘挖井人,转载请注明出处! 1 文章介绍 我们知道,在windows中,除了在图形界 ...
- qduoj su003 数组合并
描述 现在呢有两个整形数组,a[n]和b[m],而且已经知道这两个数组都是非降序数组.现在呢就有一个工作需要你来完成啦.对于a中的每个元素a[i]在b中寻找<=a[i] 的元素个数,个数记为x[ ...
- Swap Adjacent Elements
You have an array a consisting of n integers. Each integer from 1 to n appears exactly once in this ...
- cpu高的问题的快速定位
功能问题,通过日志,单步调试相对比较好定位. 性能问题,例如线上服务器CPU100%,如何找到相关服务,如何定位问题代码,更考验技术人的功底. 58到家架构部,运维部,58速运技术部联合进行了一次线上 ...
- 如何安装搜索引擎Elasticsearch?
最近工作中要用到搜索引擎,由于目前用的搜索引擎是LeanCloud 提供的 ,不太好用,不支持范围等搜索,而且每天还收费30元,请求次数也有限制.基于这些原因,我们只好在自己的服务器上部署搜索引擎了. ...
- 伪差IO分标准
伪差分电平 所谓伪差分电平,就是信号在接收端是一个差分的接收器,但其中一端固定接参考电压,而另一端接单端信号线.输入信号电压与参考电压之间进行比较,作为判断输入信号高低的标准. 常用的伪差分电平标准有 ...