9.ios之UIScrollView

什么是UIScrollView

?移动设备的屏幕大小是极其有限的,因此直接展示在用户眼前的内容也相当有限

?

?当展示的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以外的内容

?

?普通的UIView不具备滚动功能,不能显示过多的内容

?

?UIScrollView是一个能够滚动的视图控件,可以用来展示大量的内容,并且可以通过滚动查看所有的内容

?举例:手机上的“设置”、其他示例程序

UIScrollView的基本使用

?UIScrollView的用法很简单

?将需要展示的内容添加到UIScrollView中

?设置UIScrollView的contentSize属性,告诉UIScrollView所有内容的尺寸,也就是告诉它滚动的范围(能滚多远,滚到哪里是尽头)

UIScrollView无法滚动的解决办法

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

?没有设置contentSize

?scrollEnabled = NO

?没有接收到触摸事件:userInteractionEnabled = NO

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

UIScrollView的常见属性

?@property(nonatomic)CGPointcontentOffset;

?这个属性用来表示UIScrollView滚动的位置

?@property(nonatomic)CGSizecontentSize;

?这个属性用来表示UIScrollView内容的尺寸,滚动范围(能滚多远)

?

?@property(nonatomic)UIEdgeInsetscontentInset;

?这个属性能够在UIScrollView的4周增加额外的滚动区域

UIScrollView的其他属性

?@property(nonatomic)BOOLbounces;

?设置UIScrollView是否需要弹簧效果

?@property(nonatomic,getter=isScrollEnabled)BOOLscrollEnabled;

?设置UIScrollView是否能滚动

?

?@property(nonatomic)BOOLshowsHorizontalScrollIndicator;

?是否显示水平滚动条

?

?@property(nonatomic)BOOLshowsVerticalScrollIndicator;

?是否显示垂直滚动条

内容缩放

?有些时候,我们可能要对某些内容进行手势缩放,如下图所示

UIScrollView不仅能滚动显示大量内容,还能对其内容进行缩放处理

也就是说,要完成缩放功能的话,只需要将需要缩放的内容添加到UIScrollView中

UIScrollView的缩放原理

?当用户在UIScrollView身上使用捏合手势时,UIScrollView会给代理发送一条消息,询问代理究竟要缩放自己内部的哪一个子控件(哪一块内容)

缩放实现步骤

1.设置UIScrollView的id<UISCrollViewDelegate>delegate代理对象

2.设置minimumZoomScale:缩小的最小比例

3.设置maximumZoomScale:放大的最大比例

4.让代理对象实现下面的方法,返回需要缩放的视图控件

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

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

?缩放完毕的时候调用

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

?正在缩放的时候调用

-(void)scrollViewDidZoom:(UIScrollView *)scrollView

分页

?只要将UIScrollView的pageEnabled属性设置为YES,UIScrollView会被分割成多个独立页面,里面的内容就能进行分页展示

?

?一般会配合UIPageControl增强分页效果,UIPageControl常用属性如下

?一共有多少页

@property(nonatomic)NSIntegernumberOfPages;

?当前显示的页码

@property(nonatomic)NSIntegercurrentPage;

?只有一页时,是否需要隐藏页码指示器

@property(nonatomic)BOOLhidesForSinglePage;

?其他页码指示器的颜色

@property(nonatomic,retain)UIColor *pageIndicatorTintColor;

?当前页码指示器的颜色

@property(nonatomic,retain)UIColor *currentPageIndicatorTintColor;

UIScrollView的代理(delegate)

?很多时候,我们想在UIScrollView正在滚动或 滚动到某个位置 或者 停止滚动 时做一些特定的操作

?

?要想完成上述功能,前提条件就是能够监听到UIScrollView的整个滚动过程

?

?当UIScrollView发生一系列的滚动操作时,会自动通知它的代理(delegate)对象,给它的代理发送相应的消息,让代理得知它的滚动情况

?

?也就是说,要想监听UIScrollView的滚动过程,就必须先给UIScrollView设置一个代理对象,然后通过代理得知UIScrollView的滚动过程

?UIScrollView将delegate需要实现的方法都定义在了UIScrollViewDelegate协议中,因此要想成为UIScrollView的delegate,必须遵守UIScrollViewDelegate协议,然后实现协议中相应的方法,就可以监听UIScrollView的滚动过程了

UIScrollView和控制器

?一般情况下,就设置UIScrollView所在的控制器为 UIScrollView的delegate

?

?设置控制器为UIScrollView的delegate有2种方法:

?通过代码(self就是控制器)

self.scrollView.delegate =self;

?通过storyboard拖线(右击UIScrollView)

?然后,控制器应该遵守UIScrollViewDelegate协议

?最后,实现协议中定义的相关方法

时间: 2024-10-05 04:25:55

9.ios之UIScrollView的相关文章

iOS学习--UIScrollView 原理详解

iOS学习--UIScrollView 原理详解 http://blog.csdn.net/yanfangjin/article/details/7898189 ScrollView UIScrollView UIScrollView为了显示多于一个屏幕的内容或者超过你能放在内存中的内容. Scroll View为你处理缩小放大手势,UIScrollView实现了这些手势,并且替你处理对于它们的探测和回应.其中需要注意的子类是UITableView以及UITextView(用来显示大量的文字).

IOS 05 UIScrollView介绍 图片轮播器

移动设备的屏幕?大?小是极其有限的,因此直接展?示在?用户眼前的内容也相当有限 当展?示的内容较多,超出?一个屏幕时,?用户可通过滚动?手势来查看屏幕以外的内容 普通的UIView不具备滚动功能,不能显?示过多的内容 UIScrollView是?一个能够滚动的视图控件,可以?用来展?示?大量的内容,并且可以通过滚 动查看所有的内容 在IOS中UIScrollView这个控件还是比较常用和重要的. 很多时候,我们想在UIScrollView正在滚动 或 滚动到某个位置 或者 停?止滚动 时做?一些

iOS程序-UIScrollView的基本使用

iOS程序-UIScrollView的基本使用 UIScrollView 滚动视图 (实例) 博客分类: Phone / IOS / Objective-C / Swift UIScrollView 类负责所有基于 UIKit 的滚动操作. 一.创建 C代码   CGRect bounds = [ [ UIScreen mainScreen ] applicationFrame ] ; UIScrollView* scrollView = [ [UIScrollView alloc ] init

[iOS]通过UIScrollView和UIPageControl实现滑动切换的效果

UIPageControl是自带的控件,可以查看官方文档,下载官方示例学习. 如果对Xcode自带的文档不熟悉可以参见:苹果Xcode帮助文档阅读指南 接下来是我学习笔记,使用Storyboard实现滑动切换的效果. ----------------------------------------------------------------------------- 新建一个项目,拖上一个UIScrollView和UIPageControl,并且建立关联: 新建一个ContentViewCo

IOS中UIScrollView的contentSize、contentOffset和contentInsert属性

IOS中,UIScrollView继承于UIView,扩展了滚动,缩放功能,双协议,其中最常用的UITableview就是继承于该类. UIScrollView中的frame.bounds.contentSize.contentOffset和contentInset属性,这几个属性一直都容易混淆,自己小总结一下: frame是基于superView的坐标系创建的,表示该滚动视图在其父视图中的位置 bounds属性是基于该滚动视图本身的坐标系的,主要用于确定其子视图在该滚动视图上的位置,当boun

IOS中UIScrollView的contentSize、contentOffset和contentInset属性

IOS中,UIScrollView是可以滚动的视图,其中最常用的UITableView就是继承了UIScrollView. 跟所有的view一样,UIScrollView有一个frame属 性,同时,UIScrollView还具有contentSize.contentOffset和contentInset属性.我在学习中,就觉得其中 contentSize和contentOffset相对比较好理解,对contentInset就有点不太好理解.下面具体解释一下. contentSize是UIScr

iOS开发UIScrollView的底层实现

起始 做开发也有一段时间了,经历了第一次完成项目的激动,也经历了天天调用系统的API的枯燥,于是就有了探索底层实现的想法. 关于scrollView的思考 在iOS开发中我们会大量用到scrollView这个控件,我们使用的tableView/collectionview/textView都继承自它.scrollView的频繁使用让我对它的底层实现产生了兴趣,它到底是如何工作的?如何实现一个scrollView?读完本篇博客,相信你一定也可以自己实现一个简易的scrollView. 我们首先来思

iOS使用UIScrollView实现左右滑动UITableView和UICollectionView

在UIScrollView中嵌套UITableView的文章很多,但是项目需要,需要嵌套UICollectionView,而UICollectionView和UITableView有很多不同,有些知识到现在也没搞清楚,一遍一遍的尝试,总算是做出来了.以下是实现后的效果图: 由于本人刚刚接触ios开发,很多原理还说不清,所以下面的步骤以图片为主,文章结尾会附上源码地址,可下载自行研究! 1.新建项目 2.修改storyboard,由于要使用到导航栏,所以删除原有view,从工具箱中拖入Naviga

iOS &amp; Objective-C UIScrollView 图片缩放+居中

(面前横着图形学实验的deadline 我居然搞这个.. 在将图片居中的地方坑了好久,从 NSLog 输出的内容可以看出使用 ScrollView 大概的函数调用流程 略 最后是在 (void)scrollViewDidZoom:(UIScrollView *)scrollView 函数中更新 imageView.frame.origin,就是image在scrollView里的偏移. 下面这条要靠前写,不然设置zoomScale就不会生效 self.scrollView.delegate =