iOS学习笔记——滚动视图(scrollView)
滚动视图:在根视图中添加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)的更多相关文章
- [ios学习笔记之视图、绘制和手势识别]
一 视图 二 绘制 三 手势 00:31 UIGestureRecognizer 抽象类 两步 1添加识别器(控制器或者视图来完成) 2手势识别后要做的事情 UIPanGestureRecognize ...
- IOS 学习笔记(3) 视图UITabbarController
1.UITabbarViewController标签试图控制器.由于标签页本就起着分类的作用,所以往往呈现的视图内容之间,可以是毫不相关的功能. UITabbarViewController仍然继承自 ...
- IOS 学习笔记(2) 视图UINavigationController
1.栈 导航控制器自身有一个针对显示内容的栈,也有一个对于导航栏的栈,当有新的内容欲显示时,进的导航栏和显示内容会被压入此栈,这样原本显示中的导航栏和显示内容则会进入到栈的更深一层中,根据栈的先进后出 ...
- iOS学习笔记-精华整理
iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始 ...
- iOS学习笔记总结整理
来源:http://mobile.51cto.com/iphone-386851_all.htm 学习IOS开发这对于一个初学者来说,是一件非常挠头的事情.其实学习IOS开发无外乎平时的积累与总结.下 ...
- iOS学习笔记之UITableViewController&UITableView
iOS学习笔记之UITableViewController&UITableView 写在前面 上个月末到现在一直都在忙实验室的事情,与导师讨论之后,发现目前在实验室完成的工作还不足以写成毕业论 ...
- iOS学习笔记20-地图(二)MapKit框架
一.地图开发介绍 从iOS6.0开始地图数据不再由谷歌驱动,而是改用自家地图,当然在国内它的数据是由高德地图提供的. 在iOS中进行地图开发主要有三种方式: 利用MapKit框架进行地图开发,利用这种 ...
- iOS学习笔记——AutoLayout的约束
iOS学习笔记——AutoLayout约束 之前在开发iOS app时一直以为苹果的布局是绝对布局,在IB中拖拉控件运行或者直接使用代码去调整控件都会发上一些不尽人意的结果,后来发现iOS在引入了Au ...
- iOS学习笔记10-UIView动画
上次学习了iOS学习笔记09-核心动画CoreAnimation,这次继续学习动画,上次使用的CoreAnimation很多人感觉使用起来很繁琐,有没有更加方便的动画效果实现呢?答案是有的,那就是UI ...
随机推荐
- Angular源码分析之$compile
@(Angular) $compile,在Angular中即"编译"服务,它涉及到Angular应用的"编译"和"链接"两个阶段,根据从DO ...
- CentOS7使用firewalld打开关闭防火墙与端口(转载)
1.firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 停止: systemctl disabl ...
- 灵魂宝石 bzoj 2663
灵魂宝石(1s 128MB)soulgem [问题描述] "作为你们本体的灵魂,为了能够更好的运用魔法,被赋予了既小巧又安全的外形" 我们知道,魔法少女的生命被存放于一个称为灵魂宝 ...
- Java获取本机的IP与MAC地址
有些机器有许多虚拟的网卡,获取IP地址时会出现一些意外,所以需要一些验证: // 获取mac地址 public static String getMacAddress() { try { Enumer ...
- dedecms 后台栏目添加图片
前台调用栏目时需要显示图标,整理一下: 第一步:“系统->SQL命令工具” , 插入sql语句 alter table dede_arctype add typeimg varchar() 第二 ...
- BZOJ 3083: 遥远的国度 [树链剖分 DFS序 LCA]
3083: 遥远的国度 Time Limit: 10 Sec Memory Limit: 1280 MBSubmit: 3127 Solved: 795[Submit][Status][Discu ...
- 希尔排序(java)
时间复杂度为O( n^(3/2) )不是一个稳定的排序算法 如何看一个算法是否稳定:{("scala",12),("python",34),("c++ ...
- 冗余代码都走开——前端模块打包利器 Rollup.js 入门
之前翻译过一篇文章,介绍了通过 ES2015 的解构赋值语法引入模块,可以让打包工具(browserify)最终编译出来的代码量最小化. 殊不知在 webpack 1.X 版本是无法利用该特性来避免引 ...
- video.js--很赞的H5视频播放库
video.js是一款很流行的html5视频播放插件.很适合在移动端播放视频(比如微信网页),功能强大,且支持降级到flash,兼容ie8.官网:http://videojs.com/ git& ...
- 使用R画地图数据
用R画地图数据 首先,从这里下载中国地图的GIS数据,这是一个压缩包,完全解压后包含三个文件(bou2_4p.dbf.bou2_4p.shp和bou2_4p.shx),将这三个文件解压到同一个目录下. ...