#define HEIGHT  self.view.frame.size.height

#define WIDTH    self.view.frame.size.width

@interface ViewController : UIViewController<UIScrollViewDelegate>

@property (strong,nonatomic) UIScrollView *myScorolV;

@property (strong,nonatomic) UIPageControl *pageC;

@property (strong,nonatomic) NSMutableArray *arrPage;

@property (strong,nonatomic) UIImageView *threeImage;

@property (strong,nonatomic) UIImageView *secondImage;

@property (strong,nonatomic) UIImageView *firstImage;

@property (assign,nonatomic) int currentPage;

@end

//滚动视图创建

self.myScorolV = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, WIDTH, HEIGHT)];

self.myScorolV.contentSize = CGSizeMake(WIDTH * 3, 0);

self.myScorolV.pagingEnabled = YES;

self.myScorolV.showsHorizontalScrollIndicator = NO;

self.myScorolV.delegate = self;

[self.view addSubview:self.myScorolV];

//分页视图

self.pageC = [[UIPageControl alloc] initWithFrame:CGRectMake(WIDTH / 5 * 2, HEIGHT - 80, WIDTH / 5, 40)];

self.pageC.backgroundColor = [UIColor clearColor];

self.pageC.currentPage = 0;

self.pageC.numberOfPages = 5;

//指定页码颜色

self.pageC.currentPageIndicatorTintColor = [UIColor redColor];

self.pageC.pageIndicatorTintColor = [UIColor greenColor];

[self.view addSubview:self.pageC];

self.arrPage = [NSMutableArray arrayWithCapacity:10];

for (int i = 1; i < 6; i++)

{

UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"%d.png",i]];

[self.arrPage addObject:image];

}

self.firstImage = [[UIImageView alloc] init];

self.secondImage = [[UIImageView alloc] init];

self.threeImage = [[UIImageView alloc] init];

self.currentPage = 0;

[self relodeImage];

}

-(void)relodeImage

{

if (self.currentPage == 0)

{

self.firstImage.image = [self.arrPage lastObject];

self.secondImage.image = [self.arrPage objectAtIndex:self.currentPage];

self.threeImage.image = [self.arrPage objectAtIndex:self.currentPage + 1];

}

else if (self.currentPage == self.arrPage.count - 1)

{

self.firstImage.image = [self.arrPage objectAtIndex:self.currentPage - 1];

self.secondImage.image = [self.arrPage objectAtIndex:self.currentPage];

self.threeImage.image = [self.arrPage objectAtIndex:0];

}

else

{

self.firstImage.image = [self.arrPage objectAtIndex:self.currentPage - 1];

self.secondImage.image = [self.arrPage objectAtIndex:self.currentPage];

self.threeImage.image = [self.arrPage objectAtIndex:self.currentPage + 1];

}

self.firstImage.frame = CGRectMake(0, 0, WIDTH, HEIGHT);

self.secondImage.frame = CGRectMake(WIDTH, 0, WIDTH, HEIGHT);

self.threeImage.frame = CGRectMake(WIDTH * 2, 0, WIDTH, HEIGHT);

[self.myScorolV addSubview:self.firstImage];

[self.myScorolV addSubview:self.secondImage];

[self.myScorolV addSubview:self.threeImage];

self.myScorolV.contentOffset = CGPointMake(WIDTH, 0);

}

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

{

int number = (int)self.myScorolV.contentOffset.x;

if (number < 0 || number == 0)

{

if (self.currentPage == 0)

{

self.currentPage = (int)(self.arrPage.count - 1);

}

else

{

self.currentPage--;

}

}

else if (number > WIDTH * 2 || number == WIDTH * 2)

{

if (self.currentPage == (int)self.arrPage.count - 1)

{

self.currentPage = 0;

}

else

{

self.currentPage++;

}

}

self.pageC.currentPage = self.currentPage;

[self relodeImage];

}

改良UIScrollView滚动视图的更多相关文章

  1. UIScrollView 滚动视图—IOS开发

    转自:http://blog.csdn.net/iukey/article/details/7319314 UIScrollView 类负责所有基于 UIKit 的滚动操作. 一.创建 CGRect  ...

  2. UIScrollView滚动视图

    一.基本知识 1.初始化 UIScrollView #import "ViewController.h" #define WIDTH[[UIScreen mainScreen]bo ...

  3. OCUI界面设计:滚动视图与分页控件初探

    滚动视图(UIScrollView) 简单介绍 1.UIScrollView滚动视图能够排列并显示超出自身显示范围的内容. 2.UIScrollView内部整合了多种手势来达到丰富的界面展示效果. 3 ...

  4. [转]IOS 学习笔记(8) 滚动视图(UIScrollView)的使用方法

    下面介绍pageControl结合ScrollView实现连续滑动翻页的效果,ScrollView我们在应用开发中经常用到,以g这种翻页效果还是很好看的,如下图所示: 通过这个例子,我们重点学习UIS ...

  5. Swift - 滚动视图(UIScrollView)的用法

    1,当图片尺寸超过屏幕时,使用UIScrollView可以实现滚动条视图,即手指触摸滚动屏幕方便浏览整个页面. 1 2 3 4 5 6 var scrollView=UIScrollView() sc ...

  6. UIScrollView(滚动视图)

    (1)常用属性: 1)@property(nonatomic)CGPointcontentOffset; 这个属性⽤用来表⽰示UIScrollView滚动的位置 2)@property(nonatom ...

  7. iOS学习笔记——滚动视图(scrollView)

    滚动视图:在根视图中添加UIScrollViewDelegate协议,声明一些对象属性 @interface BoViewController : UIViewController<UIScro ...

  8. iOS关于菜单滚动视图实现

    菜单滚动视图也是在项目开发过程中比较常用到的功能,先直接看效果图 实现的效果如下: 当菜单个数的总长度超过一个屏宽度就计算每一个的文字宽度,若没有则只进行一个屏平分,点击菜单项时,滚动的视图位置会随着 ...

  9. swift:创建滚动视图的图片轮播器

    用swift创建图片轮播器和用OC创建的方式是一样的,都主要用到UIScrollView和UIImageview这两个控件,有几张图片,就将滚动视图的内容区域大小设置为每一张图片的大小乘以张数即可.然 ...

随机推荐

  1. 扩展kmp——原创

    扩展kmp                 LRH 所谓扩展kmp指的是与kmp相似的求辅助数组的原理,但是本身与kmp关系不大. 1.exkmp的用途:给定一个主串s和一个子串t,求出s中每一个后缀 ...

  2. 为什么PHP(CLI)同一个错误信息会打印两次?

    第一个信息是display_errors输出的,在fpm环境下输出到浏览器那里,而在CLI环境下会打印到屏幕上. display_errors = On 第二个信息是log_errors输出的. lo ...

  3. 《JS权威指南学习总结--6.6属性getter和setter》

    内容要点: 一.对象属性     对象属性是由名字.值和一组特性构成的.在ES5中,属性值可以用一个或两个方法替代,这两个方法就是getter和setter.由getter和setter定义的属性称做 ...

  4. pip 安装 lxml等 出错 解决

    x86-gnu-gcc 出错 安装如下 sudo apt-get install libffi-dev sudo apt-get install libssl-dev sudo apt-get ins ...

  5. Infix to posfix 自己写stack,没有()

    #include<iostream> #include<string> using namespace std; template<typename Type> s ...

  6. web.py 学习(-)Rocket web框架

    Rocket是一个轻量级,多线程,符合WSGI规范的web框架. Rocket使用一个线程监听连接,接收到连接之后放到Queue中,有worker线程进行处理. Rocket含有以下属性: metho ...

  7. 一步一步学EF系列【4、升级篇 实体与数据库的映射】live writer真坑,第4次补发

    前言 之前的几篇文章,被推荐到首页后,又被博客园下了,原因内容太少,那我要写多点呢,还是就按照这种频率进行写呢?本身我的意图这个系列就是想已最简单最容易理解的方式进行,每篇内容也不要太多,这样初学者容 ...

  8. Java使用千分位并保留两位小数

    double d = 123456.789; DecimalFormat df = new DecimalFormat("#,##0.00"); System.out.printl ...

  9. 使用freerdp远程连接Windows桌面

    之前使用的是rdesktop,但是由于其不支持NLA认证,便不能登录公司的电脑.为此,现在使用freerdp——这是package的名字,实际的可执行程序是xfreerdp.使用如下的命令行即可实现远 ...

  10. Chapter 15_0 模块和包

    通常,Lua不会设置规则,相反会提供很多强有力的机制来使开发者有能力实现出最适应的规则. 然而,这种方法对于模块就不行了.模块系统的一个主要目标是允许以不同的形式来共享代码. 但若没有一项公共的规则就 ...