滚动视图:在根视图中添加UIScrollViewDelegate协议,声明一些对象属性

@interface BoViewController : UIViewController<UIScrollViewDelegate>
//滚动视图对象
@property (retain, nonatomic) UIScrollView *scrollView;
//视图中小圆点,对应视图的页码
@property (retain, nonatomic) UIPageControl *pageControl;
//动态数组对象,存储图片
@property (retain, nonatomic) NSMutableArray *images;
@end
/* 何问起 hovertree.com */

在程序中导入图片,在.m文件中的代码实现:

- (void)viewDidLoad
{
[super viewDidLoad];
//初始化scrollView
self.scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(, , , )];
//初始化pageControl
self.pageControl = [[UIPageControl alloc]initWithFrame:CGRectMake(, , , )];
//初始化数组,存储滚动视图的图片
self.images = [NSMutableArray arrayWithObjects:[UIImage imageNamed:@"text1.png"],[UIImage imageNamed:@"text2.png"],[UIImage imageNamed:@"text3.png"],[UIImage imageNamed:@"text4.png"], nil nil];
//把scrollView与pageControl添加到当前视图中
[self.view addSubview:self.scrollView];
[self.view addSubview:self.pageControl];
//设置视图的背景颜色
self.view.backgroundColor = [UIColor blackColor];
//调用 setuoPage方法
[self setupPage:nil];
}
//改变滚动视图的方法实现
- (void)setupPage:(id)sender
{
//设置委托
self.scrollView.delegate = self;
//设置背景颜色
self.scrollView.backgroundColor = [UIColor blackColor];
//设置取消触摸
self.scrollView.canCancelContentTouches = NO;
//设置滚动条类型
self.scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
//是否自动裁切超出部分
self.scrollView.clipsToBounds = YES;
//设置是否可以缩放
self.scrollView.scrollEnabled = YES;
//设置是否可以进行画面切换
self.scrollView.pagingEnabled = YES;
//设置在拖拽的时候是否锁定其在水平或者垂直的方向
self.scrollView.directionalLockEnabled = NO;
//隐藏滚动条设置(水平、跟垂直方向)
self.scrollView.alwaysBounceHorizontal = NO;
self.scrollView.alwaysBounceVertical = NO;
self.scrollView.showsHorizontalScrollIndicator = NO;
self.scrollView.showsVerticalScrollIndicator = NO;
//用来记录页数
NSUInteger pages = ;
//用来记录scrollView的x坐标
int originX = ;
for(UIImage *image in self.images)
{
//创建一个视图
UIImageView *pImageView = [[[UIImageView alloc]initWithFrame:CGRectZero]autorelease];
//设置视图的背景色
pImageView.backgroundColor = [UIColor colorWithRed:0.6 green:0.6 blue:0.6 alpha:1.0];
//设置imageView的背景图
[pImageView setImage:image];
//给imageView设置区域
CGRect rect = self.scrollView.frame;
rect.origin.x = originX;
rect.origin.y = ;
rect.size.width = self.scrollView.frame.size.width;
rect.size.height = self.scrollView.frame.size.height;
pImageView.frame = rect;
//设置图片内容的显示模式(自适应模式)
pImageView.contentMode = UIViewContentModeScaleAspectFill;
//把视图添加到当前的滚动视图中
[self.scrollView addSubview:pImageView];
//下一张视图的x坐标:offset为:self.scrollView.frame.size.width.
originX += self.scrollView.frame.size.width;
//记录scrollView内imageView的个数
pages++;
}
//设置页码控制器的响应方法
[self.pageControl addTarget:self action:@selector(changePage:) forControlEvents:UIControlEventValueChanged];
//设置总页数
self.pageControl.numberOfPages = pages;
//默认当前页为第一页
self.pageControl.currentPage = ;
//为页码控制器设置标签
self.pageControl.tag = ;
//设置滚动视图的位置
[self.scrollView setContentSize:CGSizeMake(originX, self.scrollView.bounds.size.height)];
}
//改变页码的方法实现
- (void)changePage:(id)sender
{
NSLog(@"指示器的当前索引值为:%i",self.pageControl.currentPage);
//获取当前视图的页码
CGRect rect = self.scrollView.frame;
//设置视图的横坐标,一幅图为320*460,横坐标一次增加或减少320像素
rect.origin.x = self.pageControl.currentPage * self.scrollView.frame.size.width;
//设置视图纵坐标为0
rect.origin.y = ;
//scrollView可视区域
[self.scrollView scrollRectToVisible:rect animated:YES];
}
#pragma mark-----UIScrollViewDelegate---------
//实现协议UIScrollViewDelegate的方法,必须实现的
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
//获取当前视图的宽度
CGFloat pageWith = scrollView.frame.size.width;
//根据scrolView的左右滑动,对pageCotrol的当前指示器进行切换(设置currentPage)
int page = floor((scrollView.contentOffset.x - pageWith/)/pageWith)+;
//切换改变页码,小圆点
self.pageControl.currentPage = page;
} - (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
//释放创建的对象
- (void)dealloc
{
[_pageControl release];
[_scrollView release];
[super dealloc];
} /* 何问起 hovertree.com */

推荐:http://www.cnblogs.com/roucheng/p/3528371.html

iOS学习笔记——滚动视图(scrollView)的更多相关文章

  1. [ios学习笔记之视图、绘制和手势识别]

    一 视图 二 绘制 三 手势 00:31 UIGestureRecognizer 抽象类 两步 1添加识别器(控制器或者视图来完成) 2手势识别后要做的事情 UIPanGestureRecognize ...

  2. IOS 学习笔记(3) 视图UITabbarController

    1.UITabbarViewController标签试图控制器.由于标签页本就起着分类的作用,所以往往呈现的视图内容之间,可以是毫不相关的功能. UITabbarViewController仍然继承自 ...

  3. IOS 学习笔记(2) 视图UINavigationController

    1.栈 导航控制器自身有一个针对显示内容的栈,也有一个对于导航栏的栈,当有新的内容欲显示时,进的导航栏和显示内容会被压入此栈,这样原本显示中的导航栏和显示内容则会进入到栈的更深一层中,根据栈的先进后出 ...

  4. iOS学习笔记-精华整理

    iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...

  5. iOS学习笔记总结整理

    来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...

  6. iOS学习笔记之UITableViewController&UITableView

    iOS学习笔记之UITableViewController&UITableView 写在前面 上个月末到现在一直都在忙实验室的事情,与导师讨论之后,发现目前在实验室完成的工作还不足以写成毕业论 ...

  7. iOS学习笔记20-地图(二)MapKit框架

    一.地图开发介绍 从iOS6.0开始地图数据不再由谷歌驱动,而是改用自家地图,当然在国内它的数据是由高德地图提供的. 在iOS中进行地图开发主要有三种方式: 利用MapKit框架进行地图开发,利用这种 ...

  8. iOS学习笔记——AutoLayout的约束

    iOS学习笔记——AutoLayout约束 之前在开发iOS app时一直以为苹果的布局是绝对布局,在IB中拖拉控件运行或者直接使用代码去调整控件都会发上一些不尽人意的结果,后来发现iOS在引入了Au ...

  9. iOS学习笔记10-UIView动画

    上次学习了iOS学习笔记09-核心动画CoreAnimation,这次继续学习动画,上次使用的CoreAnimation很多人感觉使用起来很繁琐,有没有更加方便的动画效果实现呢?答案是有的,那就是UI ...

随机推荐

  1. win8.1硬盘安装ubuntu14.04双系统

    在网上找了很多方法都失败了,原因是大多数方法都是用mbr方式安装的,如grub4dos,easybcd.以至于连自己都怀疑win8能不能用硬盘安装,差点就去买个u盘来安装了,就在打算放弃的时候在ubu ...

  2. 自己写的数据交换工具——从Oracle到Elasticsearch

    先说说需求的背景,由于业务数据都在Oracle数据库中,想要对它进行数据的分析会非常非常慢,用传统的数据仓库-->数据集市这种方式,集市层表会非常大,查询的时候如果再做一些group的操作,一个 ...

  3. AEAI DP V3.6.0 升级说明,开源综合应用开发平台

    AEAI DP综合应用开发平台是一款扩展开发工具,专门用于开发MIS类的Java Web应用,本次发版的AEAI DP_v3.6.0版本为AEAI DP _v3.5.0版本的升级版本,该产品现已开源并 ...

  4. MySQL,MariaDB:Undo | Redo [转]

    本文是介绍MySQL数据库InnoDB存储引擎重做日志漫游 00 – Undo LogUndo Log 是为了实现事务的原子性,在MySQL数据库InnoDB存储引擎中,还用Undo Log来实现多版 ...

  5. Struts框架的核心业务

    Struts的核心业务 Struts核心业务有很多,这里主要介绍了比较简单一些的: 请求数据的处理,和数据自动封装,类型自动转换 1.Struts中数据处理 1.1.方式1:直接过去servletap ...

  6. 关于《Linux.NET学习手记(8)》的补充说明

    早前的一两天<Linux.NET学习手记(8)>发布了,这一篇主要是讲述OWIN框架与OwinHost之间如何根据OWIN协议进行通信构成一套完整的系统.文中我们还直接学习如何直接操作OW ...

  7. 四、可空类型Nullable<T>到底是什么鬼

    值类型为什么不可以为空 首先我们都知道引用类型默认值都是null,而值类型的默认值都有非null. 为什么引用类型可以为空?因为引用类型变量都是保存一个对象的地址引用(就像一个url对应一个页面),而 ...

  8. Vue.js——使用$.ajax和vue-resource实现OAuth的注册、登录、注销和API调用

    概述 上一篇我们介绍了如何使用vue resource处理HTTP请求,结合服务端的REST API,就能够很容易地构建一个增删查改应用.这个应用始终遗留了一个问题,Web App在访问REST AP ...

  9. 简单的例子了解自定义ViewGroup(一)

    在Android中,控件可以分为ViewGroup控件与View控件.自定义View控件,我之前的文章已经说过.这次我们主要说一下自定义ViewGroup控件.ViewGroup是作为父控件可以包含多 ...

  10. 【译】Unity3D Shader 新手教程(4/6) —— 卡通shader(入门版)

    本文为翻译,附上原文链接. 转载请注明出处--polobymulberry-博客园. 暗黑系 动机 如果你满足以下条件,我建议你阅读这篇教程: 你想了解更多有关表面着色器的细节知识. 你想实现一个入门 ...