UI第七课

主要内容:UIScrollView、UIPageControl(用途:软件的介绍页面、相册。。。等)

一、UIScrollView

UIScrollView:是可以滚动的View(注意:UIView本身不能滚动,子类UIScrollView拓展了滚动方面的功能,UIScrollView是所有滚动视图的基类)

主要专长与两个方面:

1、滚动:contentSize大于frame.size时,能够滚动

2、缩放:自带缩放,可以指定缩放倍数

UIScrollView滚动的相关属性:

1、contentSize:定义内容区域大小,决定是否能够滑动

2、contentOffset:视图左上角距离坐标原点的偏移量

3、scrollsToTop:滑动到顶部(滑动滚动条的时候)

4、pagingEnable:是否整页滑动

5、bounces:边界是否回弹

6、scrollEnable:是否能够滚动

7、showsHorizontalScrolllndicator:控制是否显示水平方向的滚动条

8、showsVerticalScrolllndicator:控制是否显示垂直方向的滚动条

9、alwaysBounceHorizontal:控制水平方向遇到边框是否反弹

10、alwaysBounceVertical:控制垂直方向遇到边框是否反弹

UIScrollView缩放的相关属性

1、minimumZoomScale:缩放的最小比例

2、maximumZoomScale:放大的最大比例

3、zoomScale:设置变化比例

4、zooming:判断是否在进行缩放反弹

5、bounceRoom:控制缩放的时候是否会反弹

注意:要实现缩放,还需要实现delegate,指定缩放的视图是谁

UIScrollView滚动代理方法

/ / 滚动就会触发

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

/ /  开始拖拽时触发

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView

/ /  结束拖拽时触发

- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView  willDecelerate:(BOOL)decelerate

/ /  开始减速时触发

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView

/ /  结束减速时触发(停止时)

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView

缩放的代理方法:

/ / 完成放大缩小触发

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView  withView:(UIView *)view  atScale:(float)scale

/ /  指定某个UIScrollView的子视图可以被放大缩小

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

二、UIPageControl

UIPageControl:用于指示当前是第几页,通常与UIScrollView配合使用

相关属性:

currentPage:当前的页面

numberOfPages:指定页面的个数

UIPageControl从类名可以看出其父类是UIControl,所有可以像button一样给它添加事件,只不过事件触发使用的不再是UIControlEventsTouchUpInside,而是UIControlEventsValueChanged

三、UIScrollView和UIPageControl的使用示例

/ / 创建UIScrollView对象

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];

/ / 添加到View上

[self addSubview:scrollView];

/ / 设置背景颜色

scrollView.background = [UIColor redColor];

/ / 设置显示横向的滑动条

self.showHorizontalScrollIndicator = YES;

/ / 设置内容视图的大小

scrollView.containSize = CGSizeMake(scrollView.bounds.size.width * i, scrollView.bounds.size.height);//有多少张图片,i就是多少

/ / 设置图片的整页滑动

scrollView.pagingEnabled = YES;

/ / 添加图片到UIScrollView中

for(int i = 0; i < count; i++) {

UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@“%d”, i]];

/ / 设置图片的大小

imageView.frame = CGRectMake((i - 1) * self.frame.size.width, 0, self.frame.size.width, self.frame.size.height);

/ / 添加到scrollView上

[scrollView addSubview:imageView];

/ / 释放

[imageView release], imageView = nil;

}

/ / 添加页面控制器

/ / 创建对象

UIPageController *pagecontrol = [[[UIPageController alloc] init] autorelease];

/ / 设置位置

pageControl.frame = CGRectMake(0, self.view.frame.size.height - 40, self.view.frame.size.width, 30);

/ / 设置有多少个小点点(页数)

pageControl.numberOfPages = 10;

/ / 设置当前在哪个小点点

pageControl.currentPage = 2;

/ / 没选中的小店的颜色

pageControl.pageIndicatorTintColor = [UIColor redColor];

/ / 当前点点的颜色

pageControl.currentPageIndicatorTintColor = [UIColor blueColor];

/ / 设置监听事件

[pageControl addTarget:self action:@selector(pageControlAction:) forControlEvents:UIControlEventValueChanged]; //

/ / 添加到View上

[self.view addSubView:pageControl];

#pragma mark - 实现—pageControlAction:监听事件

- (void)pageControlAction:(UIPageControl *) sender {

/ /令UIScrollView做出相应的滑动显示

CGSize viewSize = _userGuideScrollView.frame.size;

CGRect rect = CGRectMake(sender.currentPage * viewSize.width, 0, viewSize.width, viewSize.height);

[_userGuideScrollView scrollRectToVisible:rect animated:YES];

}

#pragma mark - 重写----scrollViewDelegate中的代理方法 实现滑动

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {

/ / 计算偏移量

int index = abs(scrollView.contentOffset.x / scrollView.frame.size.width);

/ / 根据偏移量来设置pageControl

_scrollPageControl.currentPage = index;

}

#pragma mark - 重写----dealloc方法

- (void)dealloc {

/ / 释放属性的内存

[_scrollPageControl release], _scrollPageControl = nil;

[_userGuideScrollView release], _userGuideScrollView = nil;

/ / 调用父类的dealloc方法

[super dealloc];

}

时间: 2024-11-10 01:25:20

UI第七课的相关文章

第七课 进程通信

unix_c_07.txt================第七课 进程通信================一.基本概念------------1. 何为进程间通信~~~~~~~~~~~~~~~~~进程间通信(Interprocess Communication, IPC)是指两个,或多个进程之间进行数据交换的过程.2. 进程间通信分类~~~~~~~~~~~~~~~~~1) 简单进程间通信:命令行参数.环境变量.信号.文件.2) 传统进程间通信:管道(fifo/pipe).3) XSI进程间通信:

BeagleBone Black板第七课:GPIO编程控制

BBB板第七课:GPIO编程控制 在一上课我们通过IO函数做了简单的GPIO端口输出高低电平输出,实现对一个LED指示灯的点亮和关闭控制,本节将通过完整的C++程序,实现第四课Shell脚本的全部功能,实现两个LED指示灯的交替闪亮. 直接通过进入功能程序 1.实现echo 44 > export 打开端口功能 上一课简单测试中,通过手工在BBB板终端模式下打开gpio44端口可通过以下程序实现: #include <stdio.h> #define GPIO_DIR "/sy

第七课 对前面内容的总结

最近忙些,现在抽出个时间总结一下前面所讲的内容. 对于struts1框架的使用,个人认为不仅仅从细节方面去掌握,需要从整体把握,理解这个框架的意思,细节的东西查查资料一般都能解决,所以真个框架的理解很重要.这个同样适用于其他技术的学习,即整体把握再到细节实现,语言Java,php或是其他的,技术原理,框架上都差不多,主要的区别在于语法使用上,所以精通一门语言是十分必要的,这对于以后的工作或是学习都是非常有帮助的.一些大神经常说的话,理解和掌握思想就行,不必拘泥于细节的东西.当然啦,如果你是一个死

Spark3000门徒第七课Spark运行原理及RDD解密总结

今晚听了王家林老师的第七课Spark运行原理及RDD解密,课后作业是:spark基本原理,我的总结如下: 1 spark是分布式 基于内存 特别适合于迭代计算的计算框架 2 mapReduce就两个阶段map和reduce,而spark是不断地迭代计算,更加灵活更加强大,容易构造复杂算法. 3 spark不能取代hive,hive做数据仓库存储,spark sql只是取代hive的计算引擎 4 spark中间数据可以在内存也可以在磁盘 5 partition是一个数据集合 6 注意:初学者执行多

【C++探索之旅】第一部分第七课:函数效应,分而治之

内容简介 1.第一部分第七课:函数效应,分而治之 2.第一部分第八课预告:传值引用,文件源头 函数效应,分而治之 上一课<[C++探索之旅]第一部分第六课:控制流程,随心所至>中,我们学习了条件语句和循环语句. 这两种语句也算是算法的核心了.在更早的课程中,我们学习了变量.这些都是所有编程语言的必备元素. 这一课我们又要学习一个几乎所有编程语言都有的极重要元素: 函数. C++的所有程序都或多或少用到函数,到目前为止,你其实也已经用了好多次了,不过你可能只缘身在此山中,还云深不知处. 函数的功

第七课 GDB调试 (下)

1序言: 通过前面一节第六课 GDB调试 (下)文章,可以掌握理解了gdb调试:怎么启动.运行,打断点.查看变量.甚至改变变量等的知识,今天来大概讲解下调试bug的类型. 2知识点: 2.1 就像之前所说的没有任何一个程序员敢打包票自己写的代码是没任何bug,bug总会有意无意的出现在我们眼前,当程序运行结果于我们预期结果不一样的时候这时候我们就应该调试,总的来说bug分为:语法错误.逻辑错误.硬件异常: 3原理: 3.1 语法错误:一般情况下出现在编译的时候会有提示编译错误这时候我们就可以马上

NeHe OpenGL教程 第七课:光照和键盘

转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线教程的编写,以及yarn的翻译整理表示感谢. NeHe OpenGL第七课:光照和键盘 光照和键盘控制: 在这一课里,我们将添加光照和键盘控制,它让程序看起来更美观. 这一课我会教您如何使用三种不同的纹理滤波方式.教您如何使用键盘来移动场景中的对象,还会教您在OpenGL场景中应用简单的光照.这一课

Coursera公开课笔记: 斯坦福大学机器学习第七课“正则化”

Coursera公开课笔记: 斯坦福大学机器学习第七课"正则化" NLPJob 斯坦福大学机器学习第七课"正则化"学习笔记,本次课程主要包括4部分: 1) The Problem of Overfitting(过拟合问题) 2) Cost Function(成本函数) 3) Regularized Linear Regression(线性回归的正则化) 4) Regularized Logistic Regression(逻辑回归的正则化) 以下是每一部分的详细解读

【Linux探索之旅】第二部分第七课:软件安装,如虎添翼

内容简介 1.第二部分第七课:软件安装,如虎添翼 2.第二部分第八课预告:RTFM 阅读那该死的手册 软件安装,如虎添翼 这一课也会相对比较轻松,所以好好享受吧. 我们来谈谈Linux下软件的安装,会在我们的Ubuntu这个Linux发行版中演示. 一般提到软件安装,有过Windows系统使用经验的朋友肯定会深有体会,那个麻烦啊,大致流程是这样的: 在搜索引擎(比如百度或google)中搜索我们的软件名称. 看到一个不错的结果,点击进入.如果是官网一般会进入官网. 下载此软件的安装程序. 双击下