//
// ViewController.m
// 0426
//
// Created by apple on 15/4/26.
// Copyright (c) 2015年 gense. All rights reserved.
// #import "ViewController.h" @interface ViewController ()<UIScrollViewDelegate>
{
UIPageControl * pageControl; //定义图片名称集合
NSMutableArray * arr ; //主显示图片view
UIImageView * mainImageView ; //
UIImageView * otherImageView; //定义当前显示索引位置
int currentImageIndex ; UIImage * leftImage ; UIImage * rightImage;
}
@end @implementation ViewController - (void)viewDidLoad {
[super viewDidLoad]; //取得屏幕宽度与高度
CGFloat width = self.view.frame.size.width;
CGFloat height = self.view.frame.size.height; arr = [NSMutableArray arrayWithCapacity:8]; //添加滚动图片
for (int i=0 ;i < 8; i++) {
[arr addObject:[NSString stringWithFormat:@"0%d.jpg",i+1]];
} currentImageIndex = 0;
[self setImage]; //实例化不显示图片
mainImageView = [[UIImageView alloc]initWithImage:[UIImage imageNamed:arr[0]]]; mainImageView.frame = CGRectMake(width, 0, width, height);
[_scrollView addSubview:mainImageView]; otherImageView = [[UIImageView alloc] init]; [_scrollView addSubview:otherImageView]; //设置scrollview 滚动区域 _scrollView.contentSize = CGSizeMake(3 * width, 0); //显示中间图片
_scrollView.contentOffset = CGPointMake(width, 0); //隐藏水平滚动格
_scrollView.showsHorizontalScrollIndicator = NO; _scrollView.pagingEnabled = YES; //注册scrollview 的代理对象
_scrollView.delegate = self; //添加分布条
pageControl = [[UIPageControl alloc]init]; //设置分页条位置
pageControl.center = CGPointMake(width/2, height-39); pageControl.bounds = CGRectMake(0, 0, width, 30); //设置分页条 分页项的color
pageControl.pageIndicatorTintColor = [UIColor whiteColor];
pageControl.currentPageIndicatorTintColor = [UIColor blackColor]; pageControl.numberOfPages = 8; pageControl.currentPage = 0; //添加change事件 [pageControl addTarget:self action:@selector(pageControlPageChange:) forControlEvents:UIControlEventValueChanged]; [_scrollView addSubview:pageControl]; } - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
int currentPage = scrollView.contentOffset.x/scrollView.frame.size.width ; if(currentPage == 1)
{
return ;
} //向左滑
if(currentPage == 0)
{
if( currentImageIndex == 0)
{
currentImageIndex = 7;
}
else
{
currentImageIndex--;
} mainImageView.image = leftImage;
_scrollView.contentOffset = CGPointMake(mainImageView.frame.origin.x, 0); }
else if(2 == currentPage) //向右滑
{
if(currentImageIndex == 7)
{
currentImageIndex = 0;
}
else
{
currentImageIndex ++;
} mainImageView.image = rightImage;
_scrollView.contentOffset = CGPointMake(mainImageView.frame.origin.x, 0);
} pageControl.currentPage = currentImageIndex ; //NSLog(@"current page index %d",currentImageIndex); //重新设置左右图片 [self setImage]; } - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
NSLog(@"end scrolling Animation");
} - (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
//调整pageControl bounds size x位置
pageControl.center = CGPointMake( scrollView.contentOffset.x + scrollView.frame.size.width/2, scrollView.frame.size.height-39); //得到主显示图片的位置
CGFloat mainImageX = mainImageView.frame.origin.x; //得到滚动offsetX
CGFloat offsetX = _scrollView.contentOffset.x; //向右滚动
if(offsetX < mainImageX)
{
otherImageView.image = leftImage;
otherImageView.frame = CGRectMake(0, 0, _scrollView.frame.size.width, _scrollView.frame.size.height);
}
else //向左滚动
{
otherImageView.image = rightImage;
otherImageView.frame = CGRectMake(mainImageX*2, 0, _scrollView.frame.size.width, _scrollView.frame.size.height);
} } - (void) pageControlPageChange:(UIPageControl *) page
{
[UIView animateWithDuration:0.5 animations:^{
_scrollView.contentOffset = CGPointMake(page.currentPage*_scrollView.frame.size.width, 0);
}]; } #pragma mark 取得下一张图片
- (void) setImage
{ if(currentImageIndex == 0)
{
leftImage = [UIImage imageNamed:arr[7]];
rightImage = [UIImage imageNamed:arr[1]];
}
else if(currentImageIndex == 7)
{
leftImage = [UIImage imageNamed:arr[6]];
rightImage = [UIImage imageNamed:arr[0]]; }
else
{
leftImage = [UIImage imageNamed:arr[currentImageIndex-1]];
rightImage = [UIImage imageNamed:arr[currentImageIndex+1]];
}
} @end

IOS scrollView 图片浏览的更多相关文章

  1. IOS第六天(3:scrollView 图片轮播器)

    IOS第六天(3:scrollView 图片轮播器) #import "HMViewController.h" #define kImageCount 5 @interface H ...

  2. iOS Swift WisdomScanKit二维码扫码SDK,自定义全屏拍照SDK,系统相册图片浏览,编辑SDK

    iOS Swift WisdomScanKit 是一款强大的集二维码扫码,自定义全屏拍照,系统相册图片编辑多选和系统相册图片浏览功能于一身的 Framework SDK [1]前言:    今天给大家 ...

  3. iOS开发-图片查看(ScrollView+UIPageControl)

    上周没事写了一个简单的图片查看,上次的查看只用到了一个UIImageView,不断的替换背景图片,实现图片之间的切换.通过ScrollView可以很简单的是实现图片之间的查看,设置setPagingE ...

  4. Unity3d之ScrollView实现图片浏览切换功能----折磨的学习

    由于项目需要,需要用NGUi实现一个图片浏览切换的功能,于是参考官方NGUI例子的ScrollView做了一个例子,初始看上去基本实现了自己想要的功能. 但是测试后发现当隐藏其中一张图片后,后面图片不 ...

  5. [置顶] ios 一个不错的图片浏览分享框架demo

    demo功能:一个不错的图片浏览分享框架demo.iphone6.1 测试通过.可以浏览图片,保存,微博分享到新浪,腾讯,网易,人人等. 注:(由于各个微博的接口有时候会有调整,不一定能分享成功.只看 ...

  6. 一款基于 Android 开发的离线版的 MM 图片浏览 App

    一款离线版的 MM 图片浏览 App,有点类似掌上百度的图片专栏应用.图片采用瀑布流展示方式,点击图片集,支持左右手势滑动切换图片:支持放大缩小功能. 实现功能:1)图片完全离线,不耗个人 GPRS ...

  7. 23.Quick QML-简单且好看的图片浏览器-支持多个图片浏览、缩放、旋转、滑轮切换图片

    之前我们已经学习了Image.Layout布局.MouseArea.Button.GroupBox.FileDialog等控件. 所以本章综合之前的每章的知识点,来做一个图片浏览器,使用的Qt版本为Q ...

  8. iOS多图片下载

    iOS多图片下载.在cell里面下载图片.做了缓存优化. (app.icon是图片地址) // 先从内存缓存中取出图片 UIImage *image = self.images[app.icon]; ...

  9. 图片浏览(CATransition)转场动画

    Main.storyboard ViewController.m // //  ViewController.m //  8A04.图片浏览(转场动画) // //  Created by huan ...

随机推荐

  1. java -jar 指定logback.xml、application.yaml

    java -jar 指定logback.xml -Dlogging.config="C:\logbacs\logback.xml" 示例:java -jar   -Dlogging ...

  2. mysql在Linux下大小写敏感设置

    默认情况下,mysql在windows下是不区分大小写的,但是mysql在linux下大小写规则是这样的: 1.数据库名与表名是严格区分大小写的: 2.表的别名是严格区分大小写的: 3.列名与列的别名 ...

  3. centos6.5-搭建mysql5.7.9

    1.msyql5.7.9编译及安装   cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.7.9 -DMYSQL_DATADIR=/data/mysql5. ...

  4. JMeter_使用正则和JSON提取器参数化(常用于提取token)

    一.使用正则表达式提取器提取token 查看登录响应参数找出token.图中token为 "ticketString": "ccf26b17-a96f-4913-8925 ...

  5. httprunner2.0 概述及使用说明

    一.概述 HttpRunner是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试.性能测试.线上监控.持续集成等多种测试需求. 二.系统流程 ...

  6. redis中文乱码问题

    1.可以直接打开dos指令框输入指令进去redis数据库,因为在安装的时候就已经勾选了配置默认的环境变量. 2.可以输入ip进去,redis-cli.exe -h 192.168.32.8 -p 63 ...

  7. VsCode安装与配置

    一.安装 二.配置 开启emmet完整的语法 文件-首选项-设置:Emmet: Trigger Expansion On Tab 三.常用插件 必装: Chinese (Simplified) Lan ...

  8. javaScript(笔记1)

    一.JavaScript数据类型: 1.分类: 基本数据类型 & 高级引用数据类型 2.基本数据类型: 数字类型(number), 字符串类型(string), 布尔类型(boolean) 3 ...

  9. 【Java】final

    final final可以用来修饰的结构:类.方法.变量 final 用来修饰一个类:此类不能被其他类所继承. 比如:String类.System类.StringBuffer类 final 用来修饰方 ...

  10. UML 有关类图知识及类间关系

    原文链接:https://blog.csdn.net/mj_ww/article/details/53020346 1. 类的含义 类图(Class diagram)显示了系统的静态结构,而系统的静态 ...