UI基础--UIScrollView和UIScrollViewDelegate

UIScrollView

在iOS的控件中,普通的UIView不具备滚动功能,不能显?示过多的内容,因此,就有了一个能够滚动的视图控件,可以用来展?大量的内容,并且可以通过滚动查看所有的内容,并且能实现图片缩放功能的一个控件,这个就是UIScrollView。

UIScrollView常用属性:

 1 //滚动位置
 2 @property(nonatomic) CGPoint contentOffset;
 3 //可视范围、滚动范围(或者说是scrollView的大小)
 4 @property(nonatomic) CGSize contentSize;
 5 //上下左右,逆时针顺序,增加滚动边距。默认不显示这个距离,滚动之后才有。
 6 @property(nonatomic) UIEdgeInsets contentInset;
 7 //是否启用弹簧效果。默认启用
 8 @property(nonatomic) BOOL bounces;
 9 //启用滚动
10  @property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled;
11 //横向滚动条
12 @property(nonatomic) BOOL showsHorizontalScrollIndicator
13 //纵向滚动条
14 @property(nonatomic) BOOL showsVerticalScrollIndicator;

注意点:

如果UIScrollView?无法滚动,可能是以下原因:

1、没有设置contentSize;

2、scrollEnabled = NO;

3、没有接收到触摸事件:userInteractionEnabled = NO;

4、没有取消autolayout功能(要想scrollView滚动,必须取消autolayout)。

5、不允许直接修改某个对象内部结构体(如contentoffset)属性的成员,必须遵循三个步骤(先拿到值,修改,再把修改后的值赋回去)。

实现缩放功能:将需要缩放的内容添加到UIScrollView中即可,但是必须遵守UIScrollView代理协议,并且要先设置了代理,再使用代理方法才会生效。

实现的原理:当用户在UIScrollView身上使用捏合手势时,UIScrollView会给代理发送一条消息,调用-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView方法,返回要缩放的控件(该控件必须为UIScrollView内的子控件)。

实现缩放功能的4个步骤

1、遵守scrollview的代理协议(一般为控制器)

2、为scrollview设置代理(self)

3、调用代理方法(-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView方法),返回需要实现缩放功能的子控件

4、设置缩放的范围(最大和最小比例)

1 //缩放属性
2 @property(nonatomic) CGFloat minimumZoomScale;//最小缩放倍数,默认为1.0
3 @property(nonatomic) CGFloat maximumZoomScale; //最大缩放倍数,默认为1.0(只有max大于min才会有缩放效果)

跟缩放相关的其他代理方法

缩放完毕的时候调用

- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view

正在缩放的时候调用

- (void)scrollViewDidZoom:(UIScrollView *)scrollView

UIScrollViewDelegate

delegate:代理(代理的名字都以类的名字开始,代理的方法也是 以对象的名字开始,大部分方法名都是这样)

代理的作用:

1)、传值,经常用在b类要把自己的一个数据或者对象传给a类,让a类去展示或者处理。(切分紧耦合,和代码分块的时候经常用)。

2)、传事件,所谓传事件就是a类发生了什么事,把这件事告诉关注委托的对象,由委托的对象去考虑发生这个事件后应该做出什么反映。

UIScrollViewDelegate中的一些方法:

 1 - (void)scrollViewDidScroll:(UIScrollView *)scrollView;//滚动事件方法,滚动过程中会一直循环执行(滚动中…)
 2
 3 - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;//开始拖拽事件方法
 4
 5 - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;//拖拽操作完成事件方法
 6
 7 - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;//即将停止滚动事件方法
 8
 9 - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;//滚动停顿完成事件方法,滚动过程中减速停止后执行
10
11 - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view //开始缩放事件方法
12
13 - (void)scrollViewDidZoom:(UIScrollView *)scrollView//缩放操作完成事件方法
14
15 - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView; //返回缩放视图,注意只有实现这个代理方法才能进行缩放,此方法返回需要缩放的视图
时间: 2024-11-29 02:21:03

UI基础--UIScrollView和UIScrollViewDelegate的相关文章

UI基础—— UIScrollView

一.UIScrollView使用的步骤 1.创建UIScrollView 2.将需要展示的内容添加到UIScrollView中 3.设置UIScrollView的滚动范围 (contentSize) 1 @interface ViewController () 2 @property (weak, nonatomic) IBOutlet UIScrollView *scrollView; 3 @end 4 // 1.添加两个子控件到UIScrollView中 5 // 一个控件没有设置frame

[UI基础]UIScrollView

一.知识点介绍 1.UIScrollView控件是什么? 移动设备的屏幕尺寸极其有限,能够展现在用户眼前的内容因此受到限制.普通的UIView不具备滚动功能,UIScrollView是一个可以滚动的视图控件, 可以因此显示更多的内容,用户可以通过滚动查看更多的内容.如手机里的“设置” 2.UIScrollView的简单使用 (1)将需要展?的内容添加到UIScrollView中 (2)设置UIScrollView的contentSize属性,告诉UIScrollView所有内容的尺?,也就是告诉

UI基础:UIScrollView、UIPageControl

UIScrollView UIScrollView 是可以滚动的视图,UIView本身不能滚动,子类UIScrollView扩展了滚动方面的功能. UIScrollView 是所有滚动视图的基类.以后的UItableView,UITextView等视图都是继承于该类. 使用场景:显示不下(单张大图);内容太多(图文混排);滚动头条(图片);相册等. 效果如图: UIScrollView的核心功能: UIScrollView主要专长两个方面: 滚动:contentSize大于frame.size的

iOS开发基础-UIScrollView实现图片缩放

当用户在 UIScrollView 上使用捏合手势时, UIScrollView 会给 UIScrollViewDelegate 协议发送一条消息,并调用代理的 viewForZoomingInScrollView: 方法,该方法返回的控件就是需要进行缩放的控件. 实现缩放功能的步骤: 1)让控制器遵守 UIScrollView 的代理协议 UIScrollViewDelegate : 2)为 UIScrollView 设置代理, _scrollView.delegate = self; : 3

【转】 iOS开发UI篇—UIScrollView控件实现图片轮播

原文:http://www.cnblogs.com/wendingding/p/3763527.html iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播            二.实现代码 storyboard中布局 代码: 1 #import "YYViewController.h" 2 3 @interface YYViewController () <UIScrollViewDelegate> 4 @property (w

ios开发-UI基础-超级猜图

[注意]转载时请注明出处博客园-吃唐僧肉的小悟空http://www.cnblogs.com/hukezhu/ 本篇文章介绍一个比较综合的小应用----超级猜图. 功能分析: 根据显示的图片,在下面的待选项按钮中选中正确答案按钮,选中的按钮会显示在正确答案按钮中 答案错误,答案颜色变为红色,分数减小 答案正确,答案颜色变为蓝色,两秒自动跳入下一题,分数增加 点击"下一题"可以进入下一个题目 点击"大图",可以放大显示图片,再次点击图片或者背景,图片缩小至原来大小 点

ios开发-UI基础-应用管理(单纯界面)改进5-使用代理实现监听下载按钮的点击(delegate)

[注意]转载时请注明出处博客园-吃唐僧肉的小悟空http://www.cnblogs.com/hukezhu/ 前几篇文章介绍了一个应用管理的小应用,从最开始的单纯实现功能,一步一步就行改进\封装,上篇文章是使用xib进行了优化,本篇文章使用代理实现监听下载按钮的点击. 在原来的基础上,使用代理的主要思路分析: 首先要新建一个协议 声明协议的要实现的方法(一般为optional) 声明一个遵守该协议的代理的属性 使用代理,通知其代理完成操作 在代理中的实现步骤: 遵守协议 设置代理(一般通过拖线

UI基础控件UIButton

一:UI基础 Button控件 1,简单说明:UIView和UIViewController间的关系 一个应用并不一定要有UIViewController,但是为了管理界面事件(比如按钮点击事件)一般我们在创建应用时要先创建控制器,控制器拥有一个UIView属性. UIView用来展示数据.及用户输入数据.监听事件的触发(比如按钮的touchupinside事件) 而控制可以用来处理这些事件,赋值UIView的管理. 按钮可以展示文字和图片,也就是说按钮具有这些属性. 2,按钮的三种状态 nor

Android UI基础

Android UI概述 Android UI由View和ViewGroup组成. ViewGroup是不可见的,用于组织和排版View和ViewGroup. View用户显示内容,以及响应用户的操作. 可以按照需要安排UI的叠放,不过叠放的层数越少,性能上来说越好. Android UI可以在code中生产,不过更加方便的方式是在Android的XML文件中定义UI. Layouts 通过XML方式实现 可以通过2种方式定义界面结构. 1. 在XML定义视图结构 2. 在运行时动态创建视图结构