本代码主要实现图片之间的切换


目录结构

代码

ViewController.m文件


#import "ViewController.h"

@interface ViewController ()
@property(strong,nonatomic)UIScrollView *scrollView;
@property(strong,nonatomic)UIPageControl *pageControl;
//存储图片
@property(strong,nonatomic)UIImageView *firstIamges;
@property(strong,nonatomic)UIImageView *secondImage;
@property(strong,nonatomic)UIImageView *thirdImage;
//存储图片的集合
@property(strong,nonatomic)NSMutableArray *imageArray;
//当前页码
@property(assign,nonatomic)int currentPage;
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; self.scrollView=[[UIScrollView alloc]initWithFrame:CGRectMake(, ,WIDTH , HEIGHT)];
self.scrollView.contentSize=CGSizeMake(WIDTH*, );
self.scrollView.pagingEnabled=YES;
self.scrollView.delegate=self;
self.scrollView.showsHorizontalScrollIndicator=NO;
[self.view addSubview:self.scrollView]; self.pageControl=[[UIPageControl alloc]initWithFrame:CGRectMake(WIDTH/2.7, , WIDTH/, )]; //设置当前页
self.pageControl.currentPage=;
//分页
self.pageControl.numberOfPages=;
//指定页码的颜色
self.pageControl.currentPageIndicatorTintColor=[UIColor redColor];
self.pageControl.pageIndicatorTintColor=[UIColor blueColor];
[self.view addSubview:self.pageControl]; //初始化存储图片的集合
self.imageArray=[NSMutableArray array];
for (int i=; i<; i++) {
UIImage *image=[UIImage imageNamed:[NSString stringWithFormat:@"%d",i]];
[self.imageArray addObject:image];
} self.firstIamges=[[UIImageView alloc]init];
self.secondImage=[[UIImageView alloc]init];
self.thirdImage=[[UIImageView alloc]init]; //当前页码
self.currentPage=;
[self reloadImage]; }
-(void)reloadImage{
//第一种情况,第一页
if(self.currentPage==){
self.firstIamges.image=[self.imageArray lastObject];
self.secondImage.image=[self.imageArray objectAtIndex:self.currentPage];
self.thirdImage.image=[self.imageArray objectAtIndex:self.currentPage+];
}
//第二种情况 最后一页
else if(self.currentPage==self.imageArray.count-){
self.firstIamges.image=[self.imageArray objectAtIndex:self.currentPage-];
self.secondImage.image=[self.imageArray objectAtIndex:self.currentPage];
self.thirdImage.image=[self.imageArray objectAtIndex:];
}
//中间页
else{ self.firstIamges.image=[self.imageArray objectAtIndex:self.currentPage-];
self.secondImage.image=[self.imageArray objectAtIndex:self.currentPage];
self.thirdImage.image=[self.imageArray objectAtIndex:self.currentPage+];
} self.firstIamges.frame=CGRectMake(, , WIDTH, );
self.secondImage.frame=CGRectMake(WIDTH, , WIDTH, );
self.thirdImage.frame=CGRectMake(WIDTH*, , WIDTH, ); [self.scrollView addSubview:self.firstIamges];
[self.scrollView addSubview:self.secondImage];
[self.scrollView addSubview:self.thirdImage]; self.scrollView.contentOffset=CGPointMake(WIDTH, );
} #pragma mark -Scrollview Delegate
//在滚动结束状态换图
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
float x=self.scrollView.contentOffset.x; //向左
if (x<||x==) {
if (self.currentPage==) {
self.currentPage=(int)self.imageArray.count-;
}else{
self.currentPage--;
} }
//向右 if(x>WIDTH*||x==WIDTH*){
if (self.currentPage==(int)self.imageArray.count-) {
self.currentPage=;
}else{
self.currentPage++;
}
} self.pageControl.currentPage=self.currentPage;
[self reloadImage]; }
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
} @end

ViewController.h文件

#import <UIKit/UIKit.h>
#define WIDTH self.view.frame.size.width
#define HEIGHT self.view.frame.size.height
@interface ViewController : UIViewController<UIScrollViewDelegate> @end

效果图


iOS-UIScrollView和UIPageControl的综合实力,滚动图,轮播图的更多相关文章

  1. 带无缝滚动的轮播图(含JS运动框架)

    今天学习了一下轮播图的写作,想到前一阵学过的无缝滚动得思想,所以就把轮播与滚动结合了一下.不过我的代码的神逻辑我自己都不敢恭维,在没网没参照的情况下,只能硬着头皮往下写,希望跟大家共勉吧. js运动框 ...

  2. 用原生的javascript 实现一个无限滚动的轮播图

    说一下思路:和我上一篇博客中用JQ去写的轮播图有相同点和不同点 相同点: 首先页面布局是一样的 同样是改变.inner盒子的位置去显示不同的图片 不同点: 为了实现无限滚动需要多添加两张重复的图片 左 ...

  3. 带无缝滚动的轮播图(含JS运动框架)-简洁版

    昨天写的神逻辑,今天终于解决,经过大家的商讨,终于研究出来一套简单的代码!!! js代码如下: <script> window.onload = function() { var oWra ...

  4. iOS 图片轮播图(自动滚动)

    iOS 图片轮播图(自动滚动) #import "DDViewController.h" #define DDImageCount 5 @interface DDViewContr ...

  5. iOS swift版本无限滚动轮播图

    之前写过oc版本的无限滚动轮播图,现在来一个swift版本全部使用snapKit布局,数字还是pageConrrol样式可选 enum typeStyle: Int { case pageContro ...

  6. 一步一步拆解一个简单的iOS轮播图(三图)

    导言(可以不看): 不吹不黑,也许是东半球最简单的iOS轮播图拆分注释(讲解不敢当)了(tree new bee).(一句话包含两个人,你能猜到有谁吗?提示:一个在卖手机,一个最近在卖书)哈哈... ...

  7. iOS回顾笔记(05) -- 手把手教你封装一个广告轮播图框架

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  8. iOS最笨的办法实现无限轮播图(网络加载)

    iOS最笨的办法实现无限轮播图(网络加载) 简单的做了一下: 使用方法: 把 请求返回的 图片地址(字符串类型)放进数组中就行 可以使用SDWebImage(我就是用的这个)等..需要自己导入并引用, ...

  9. IOS轮播图

    轮播图播放的主要技术在于: cell的封装.这里采用UICollectionViewCell实现. #import <UIKit/UIKit.h> @interface CircleVie ...

  10. iOS开发之 用第三方类库实现轮播图

    在github上面有很多的第三方类库,大大节约了大家的开发时间 下载地址:https://github.com/gsdios/SDCycleScrollView 现已支持cocoapods导入:pod ...

随机推荐

  1. C#三种判断字符是否为汉字的方法

    判断一个字符是不是汉字通常有三种方法,第一种用 ASCII 码判断,第二种用汉字的 UNICODE 编码范围判 断,第三种用正则表达式判断,以下是具体方法. 1.用ASCII码判断 在 ASCII码表 ...

  2. 在Linux(Ubuntu)下搭建ASP.NET Core环境并运行 继续跨平台

    最新教程:http://www.cnblogs.com/linezero/p/aspnetcoreubuntu.html 无需安装mono,在Linux(Ubuntu)下搭建ASP.NET Core环 ...

  3. WinForm菜单和工具栏

    菜单和工具栏: 1.MenuStrip - 顶部菜单栏分割线:1输入- 2.右键插入 |SpearTOR 快捷键设置:每一个项右键属性的最下面可以设置快捷键不管选项隐藏还是菜单隐藏,快捷键都管用 2. ...

  4. python sqlite中通过字段名获取查询结果

    在连sqlite数据库时,用fetchall()查询结果,是用row[0],row[1]这样的方式来打印每列的结果 但是我想用row[“字段名”]方式查询怎么办? import sqlite3 con ...

  5. PHP导入excel数据到MYSQL

    这里介绍一个直接将excel文件导入mysql的例子.我花了一晚上的时间测试,无论导入简繁体都不会出现乱码,非常好用.PHP-ExcelReader,下载地址: http://sourceforge. ...

  6. 使用DataConnectionDialog在运行时设置数据源连接字符串

    介绍: DataConnectionDialog 类: 打开“数据连接”对话框,获取用户选择的数据连接信息. 命名空间为:Microsoft.Data.ConnectionUI 所在程序集:Micro ...

  7. SSH服务器与Android通信(2)--Android客户端接收数据

    基本原理是Android客户端通过HttpClient向服务器发出请求,服务器向Android客户端返回JSON字符串,Android客户端解析JSON字符串获得数据. 1. 新建一个Android项 ...

  8. GNOME on Arch Linux

    Arch Linux上Gnome桌面截图欣赏: 相比而言,Debian的壁纸一直好像格调不够啊:

  9. 《高可用MySQL》1 – Windows环境下压缩版MySQL安装

    近日在读O’REILIY系列的<高可用MySQL>, 自然少不了主从(Master-Slave)配置和横向扩展相关的内容.Master-Slave这东西吧,在许多公司都是标配,开发中基本天 ...

  10. linux系统新建用户ssh远程登陆显示-bash-4.1$解决方法

    linux系统新建的用户用ssh远程登陆显示-bash-4.1$,不显示用户名路径 网络上好多解决办法,大多是新建.bash_profile文件然后输入XXXXX....然而并没有什么用没有用.... ...