iOS基础篇(十五)——UIScrollView的基本用法
滚动视图(UIScrollView)通常用于显示内容尺寸大于屏幕尺寸的视图。
一、基本属性
1、CGSize contentSize :设置UIScrollView的滚动范围
2、CGPoint contentOffset :UIScrollView当前滚动的位置
3、UIEdgeInsets contentInset :设置内容的边缘
4、BOOL bounces 当超出边界时表示是否可以反弹
5、BOOL scrollEnabled 是否能滚动
6、BOOL showsHorizontalScrollIndicator 是否显示水平方向的滚动条
7、BOOL showsVerticalScrollIndicator 是否显示垂直方向的滚动条
8、UIScrollViewIndicatorStyle indicatorStyle 设定滚动条的样式
9、BOOL tracking 监控当前目标是否正在被跟踪
10、BOOL dragging 监控当前目标是否正在被拖拽
11、BOOL decelerating 监控当前目标是否正在减速
12、BOOL zooming 判断控件的大小是否正在改变
13、BOOL zoomBouncing 判断是否正在进行缩放反弹
14、minimumZoomScale 缩小的最小比例
15、maximumZoomScale 放大的最大比例
16、BOOL scrollsToTop 点击设备的状态栏时,是scrollsToTop = YES的控件滚动返回至顶部
//初始化,设置尺寸和大小
scrollView = [[UIScrollView alloc] initWithFrame:(CGRect){,,frame.size.width,frame.size.height}];
//添加到视图
[self.view addSubview:scrollView];
//背景颜色
scrollView.backgroundColor = [UIColor orangeColor];
//滚动范围
scrollView.contentSize = CGSizeMake(frame.size.width+, frame.size.height+);
//设置代理
scrollView.delegate = self;
//是否分页
scrollView.pagingEnabled = YES;
//是否滚动
scrollView.scrollEnabled = YES;
//是否显示滚动条
scrollView.showsHorizontalScrollIndicator = YES;
scrollView.showsVerticalScrollIndicator = NO;
//滚动条风格
scrollView.indicatorStyle = UIScrollViewIndicatorStyleWhite;
//内容边缘和indicator边缘
scrollView.contentInset = UIEdgeInsetsMake(, , , );
scrollView.scrollIndicatorInsets = UIEdgeInsetsMake(, , , );
二、常见方法
1、返回一个放大或者缩小的视图
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;
2、开始放大或者缩小
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view;
3、缩放结束时
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale;
4、视图已经放大或缩小
- (void)scrollViewDidZoom:(UIScrollView *)scrollView;
5、是否支持滑动至顶部
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;
6、滑动到顶部时调用该方法
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;
7、scrollView 已经滑动
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;
8、scrollView 开始拖动
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
9、scrollView 结束拖动
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
10、scrollView 开始减速
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;
11、scrollview 减速停止
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;
三、UIScrollView和UIPageControl实现图片切换
首先简单介绍下UIPageControl:
UIPageControll 是继承于UIControl的一个IOS系统UI控件,可以提供给开发者设计分页效果的功能。
//初始化
pageCtrl=[[UIPageControl alloc] initWithFrame:CGRectMake(, , , )];
[self.view addSubview:pageCtrl];
//设置控制器页数(默认为0)
pageCtrl.numberOfPages=;
//设置当前所在页码
pageCtrl.currentPage = ;
//设置当总页数为1时,是否自动隐藏控制器
pageCtrl.hidesForSinglePage = YES;
//设置控制器页码点得颜色
pageCtrl.pageIndicatorTintColor = [UIColor orangeColor];
//设置控制器当前所在页码点的颜色
pageCtrl.currentPageIndicatorTintColor = [UIColor greenColor];
pageCtrl.tag=; //给pageControl添加点击事件
[pageCtrl addTarget:self action:@selector(turnPage:) forControlEvents:UIControlEventTouchUpInside];
视图载入:
@interface ViewController ()<UIScrollViewDelegate>{
UIScrollView *scrollView;
UIPageControl *pageCtrl;
NSArray *imageArray;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//初始化
scrollView = [[UIScrollView alloc] initWithFrame:(CGRect){,,self.view.frame.size.width,self.view.frame.size.height}];
[self.view addSubview:scrollView];
//代理
scrollView.delegate = self;
//滑动范围
scrollView.contentSize = CGSizeMake(*, );
//背景颜色
scrollView.backgroundColor = [UIColor clearColor];
//是否分页
scrollView.pagingEnabled = YES;
//是否显示滚动条
scrollView.showsHorizontalScrollIndicator = NO;
scrollView.showsVerticalScrollIndicator = NO;
//图片数组
imageArray = @[@"u=1522827729,398642494&fm=21&gp=0", @"u=498354980,1967037110&fm=21&gp=0", @"u=455056084,2054881807&fm=21&gp=0"];
//加载图片
for (int i=; i<; i++) {
UIImageView *imageView=[[UIImageView alloc] initWithFrame:CGRectMake(i*, , , )];
//imageView.image=[UIImage imageNamed:[NSString stringWithFormat:@"image%d.jpg",i+1]];
NSString *image = [imageArray objectAtIndex:i];
imageView.image = [UIImage imageNamed:image];
[scrollView addSubview:imageView];
}
//初始化
pageCtrl=[[UIPageControl alloc] initWithFrame:CGRectMake(, , , )];
[self.view addSubview:pageCtrl];
//设置控制器页数(默认为0)
pageCtrl.numberOfPages=;
//设置当前所在页码
pageCtrl.currentPage = ;
//设置当总页数为1时,是否自动隐藏控制器
pageCtrl.hidesForSinglePage = YES;
//设置控制器页码点得颜色
pageCtrl.pageIndicatorTintColor = [UIColor orangeColor];
//设置控制器当前所在页码点的颜色
pageCtrl.currentPageIndicatorTintColor = [UIColor greenColor];
pageCtrl.tag=;
//给pageControl添加点击事件
[pageCtrl addTarget:self action:@selector(turnPage:) forControlEvents:UIControlEventTouchUpInside];
}
图片切换:
//UIScrollViewDelegate的scrollViewDidEndDecelerating函数,用户滑动页面停下后调用该函数
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)ScrollView
{
//更新UIPageControl的当前页
int current=scrollView.contentOffset.x/scrollView.frame.size.width;
NSLog(@"scrollview :%f",scrollView.contentOffset.x);
UIPageControl *pageControl = (UIPageControl*)[self.view viewWithTag:];
pageControl.currentPage = current; } //点击UIPageControl时的响应函数turnPage
- (void)turnPage:(UIPageControl*)change{
///令UIScrollView做出相应的滑动显示
CGSize size = scrollView.frame.size;
CGRect rect = (CGRect){change.currentPage*size.width,,size.width,size.height};
[scrollView scrollRectToVisible:rect animated:YES]; }
如图:

iOS基础篇(十五)——UIScrollView的基本用法的更多相关文章
- IOS基础之 (十五)知识点
一 SEL 1. 方法的存储位置 每个类的方法地址列表都存储在类对象中. 每个方法都有一个与之对应的SEL类型的对象. 根据一个SEL对象就可以找到方法的地址,进而调用方法. Person.h #im ...
- ios基础篇(五)——UITextField的详细使用
UItextFieldField通常用于外部数据输入,以实现人机交互. 以下是UItextFieldField的属性及常见用法: 1.textField :设置文本框的默认文本. 2.Placehol ...
- Bootstrap <基础二十五>警告(Alerts)
警告(Alerts)以及 Bootstrap 所提供的用于警告的 class.警告(Alerts)向用户提供了一种定义消息样式的方式.它们为典型的用户操作提供了上下文信息反馈. 您可以为警告框添加一个 ...
- 小猪猪C++笔记基础篇(五)表达式、语句
小猪猪C++笔记基础篇(五) 关键词:表达式.语句 本章的内容比较简单,基本上没有什么理解上的困难,都是知识上的问题.先开始想要不要写呢,本来是不准备写的,但是既然读了书就要做笔记,还是写一写,毕竟还 ...
- Java15-java语法基础(十五)——内部类
java16-java语法基础(十五)内部类 一.内部类: 可以在一个类的内部定义另一个类,这种类称为内部类. 二.内部类分为两种类型: 1.静态内部类: 静态内部类是一个具有static修饰词的类, ...
- python基础篇(五)
PYTHON基础篇(五) 算法初识 什么是算法 二分查找算法 ♣一:算法初识 A:什么是算法 根据人们长时间接触以来,发现计算机在计算某些一些简单的数据的时候会表现的比较笨拙,而这些数据的计算会消耗大 ...
- Java基础之十五 泛型
第十五章 泛型 一般的类和方法,只能使用具体的类型:要么是基本类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大. 在面对对象编程语言中,多态算是一种泛化机 ...
- Python基础篇(五)_文件和数据格式化
Python基础篇_文件和数据格式化 文件的使用:文件打开.关闭.读写 文件打开:通过open()函数打开文件,并返回一个操作文件的变量. 使用语法:<变量名> = (<文件路径以及 ...
- 《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程)
1.简介 前面几篇宏哥介绍了两种(java和maven)环境搭建和三大浏览器的启动方法,这篇文章宏哥将要介绍第一个自动化测试脚本.前边环境都搭建成功了,浏览器也驱动成功了,那么我们不着急学习其他内容, ...
随机推荐
- css3渐变色彩
CSS3 Gradient 分为线性渐变(linear)和径向渐变(radial).由于不同的渲染引擎实现渐变的语法不同,这里我们只针对线性渐变的 W3C 标准语法来分析其用法,其余大家可以查阅相关资 ...
- XML转java对象
使用XStream来转换. XStream xStream = new XStream(); xStream.autodetectAnnotations(true); // xStream.alia ...
- 酶设计软件rosetta安装
1.Rosetta uses SCons as a compile assistant. You will likely need to download and install this first ...
- Unity NGUI 资源下载
https://www.assetstore.unity3d.com/cn/#!/content/2413 版本: 3.9.1 下载地址 密码:amtz
- 夺命雷公狗-----React---13--事件监听
在react中事件监听直接作为组建的属性来添加即可,就像DOM中的html操作 <!DOCTYPE> <html> <head> <meta charset= ...
- OAuth2.0概述
OAuth2.0较1.0相比,整个授权验证流程更简单更安全,也是未来最主要的用户身份验证和授权方式. 关于OAuth2.0协议的授权流程可以参考下面的流程图,其中Client指第三方应用,Resour ...
- YOU KNOW NOTHING , SNOW
JVM运行时数据区域 方法区: 用 于存储虚拟机加载的类信息,常量,静态变量,JIT编译后的代码,所有线程共享 堆:所有线程共享,用来存储实例对象. 虚拟机栈:线程私有,生命周期与线程相同,每个方法被 ...
- 如何从github上面拷贝源码
有好奇心的朋友们一定都想看一看很多开源项目的源码,那么github就不用说啦,太多的开源项目都把源码放到上面. 博主最近为了学习angularjs也不得不去github上面弄源码,下面将会介绍如何做: ...
- GMF:如何让网格显示在background,而不是foreground
前言 很久没写文章了,准备写一系列关于Eclipse RCP /Plugin的文章. 这些文章都是trouble shooting性质的,不准备写的很细,当你碰到这样的问题,google到时,能帮你把 ...
- 【Spring】利用Spring最简单地使用异步方法
有时候我们想异步地调用某个方法. 比如这个场景:在业务处理完毕后,需给用户发送通知邮件.由于邮件发送需调用邮箱服务商,有可能发生阻塞,我们就可以异步调用.当然有个前提,即如果邮件发送失败,不需要提示用 ...