iOS中的ScrollView

概览

UIScrollView类为显示大于应用程序窗口的内容提供支持。它使得用户可以使用滑动手势来滚动,并可以使用扩张/收缩手势来放大缩小部分内容。

UIScrollView是包括UITableView和UITextView在内的多个UIKit类的父类。

UIScrollView对象(或者简单地称为滚动视图)的中心思想是一个在它的内容视图中可调整的原点的视图。它裁剪它的内容至它本身的框架,该框架一般(但非必须)与应用程序主窗口的框架相符。滚动视图会跟踪手指的移动并据此调整原点。“通过”滚动视图显示其内容的视图基于新的原点来绘制自己,而原点与内容视图的偏移相关。滚动视图除了显示水平和垂直滚动指示器之外并不直接参与绘制。滚动视图必须知道内容的大小,这样它才能知道何时停止滚动;默认情况下,它会在滚动超出内容范围时“反弹”回去。

管理显示于滚动视图的绘制内容的对象应当平铺内容子视图,这样才不会有视图超出屏幕大小。当用户在滚动视图中滚动时,该对象应当在必要的时候添加或移除子视图。

滚动视图并没有滚动条,因此它必须知道一个触摸信号是希望滚动还是希望跟踪内容中的一个子视图。为了作出此决策,滚动视图会暂时截取一个触摸按下事件并启动一个计时器,在计时器超时之前,观察是否触摸的手指做出了移动。若计时器在手指没有明显位移时结束,滚动视图就将跟踪事件送往被触屏的子视图。若用户在计时器超时前拖动手指到足够的距离,滚动视图将取消对子视图的所有跟踪并滚动自己。子类可以复写touchesShouldBegin:withEvent:inContentView:,pagingEnabled以及touchesShoudCancelInContentView: 方法(这些方法被滚动视图调用)以调整滚动视图处理滚动手势的方式。

滚动视图同样还处理放大和缩小内容。当用户做出了一个扩张或收缩手势,滚动视图会调整其内容的偏移和缩放(scale)。当手势结束时,管理内容视图的对象应当在必要时更新子视图的内容。(注意手势可以在一根手势还在按下的状态下结束。)当手势在进行中时,滚动视图不会向子视图发送任何跟踪调用。

UIScrollView类可以拥有一个托管,该托管必须采用UIScrollViewDelegate协议。对于缩放的工作,托管必须实现viewForZoomingInScrollView:以及scrollViewDidEndZooming:withView:atScale:;此外,最大(maximumZoomScale)和最小(minimumZoomScale)缩放规模必须不同。

对于基本视图行为的信息,请参见View ProgrammingGuide for iOS。

状态保留

在iOS 6及其后版本,若你为该视图的restorationIdentifier属性分配一个值,该视图将会尝试在app启动之间保留其自身的滚动相关信息,zoomScale,contentInset以及contentOffset属性的值将被保留。在恢复时,滚动视图会恢复这些值这样内容就会表现为和之前滚动到同一位置一样。对于更多关于状态保留和恢复的工作机制,请参阅iOS App Programming Guide。

属性

alwaysBounceHorizontal

布尔值,规定是否在水平方向在滚动到末尾时产生“反弹”。

若该属性及bounces被设定为YES,水平拖拽即使在内容小于滚动视图边缘时也被允许。默认值为NO。

alwaysBounceVertical

布尔值,规定是否在垂直方向在滚动到末尾时产生“反弹”。

若该属性及bounces被设定为YES,垂直拖拽即使在内容小于滚动视图边缘时也被允许。默认值为NO。

bounces

布尔值,控制是否滚动视图能否超出内容边缘再弹回。

若该属性的值为YES。滚动视图会在遇到内容边缘时反弹。若值为NO,滚动会在达到边缘时立即停止而不反弹。默认值为YES。

bouncesZoom

布尔值,规定滚动视图是否在缩放超出最大值和最小值动画时播放内容缩放动画。

若该属性的值为YES,在缩放超出最大值或最小值时,滚动视图会临时播放一个稍超出限制范围的动画再返回限制大小。若该属性为NO,缩放会在达到限制大小时立即停止,默认为YES。

canCancelContentTouches

布尔值,控制触摸内容视图时是否总是导致跟踪。

若该属性的值为YES,内容中的视图会开始跟踪触摸的手指,若用户拖拽手指到足以滚动的距离,视图会收到touchesCancelled:withEvent:信息,而滚动视图会作为一个滚动事件处理这次触摸。若该属性的值为NO,滚动视图在内容视图开始跟踪时将无视手指移动,不进行滚动。

contentInset

表示内容视图从封闭滚动视图中被嵌入的距离。

用该属性增加围绕内容的滚动区域。单位为点。默认值为UIEdgeInsetssZero。

contentOffset

表示从滚动视图的原点到内容视图的原点的偏移的点。

默认值为CGPointZero。

contentSize

内容视图的大小。

单位是点。默认值是CGSizeZero。

decelerating

返回滚动视图中的内容是否在提起手指后继续移动。(只读)

若用户已不再拖拽内容但滚动还在发生时返回YES。

decelerationRate

浮点数,规定用户提起手指后的滚动减速速率。

你的应用程序可以使用UIScrollViewDecelerationRateNormal和UIScrollViewDecelerationRateFast常量作为引用点以获得一个合理的减速速率。

delaysContentTouches

布尔值,规定滚动视图是否延迟处理触摸下压手势。

若该属性值为YES,滚动视图会延迟处理下压手势直到可以确定该操作的意图是否是滚动。若值为NO,滚动视图会立即调用touchesShoudBegin:withEvent:inContentView:。默认值为YES。

具体讨论详见类讨论。

delegate

滚动视图对象的托管。

托管必须实现UIScrollViewDelegate协议。UIScrollView类(不保持托管),会调用托管实现中的每一个方法。

directionalLockEnabled

布尔值,规定是否滚动在某一方向上被禁止。

若该属性为NO,滚动在水平和垂直方向上都被允许。若该属性为YES,当用户开始某一方向的滚动(水平或垂直),滚动视图会禁止另一方向的滚动。若以对角线方向拖动,滚动则不会被锁定且用户在本次拖动完成之前可以在任意方向拖动。默认值为NO。

dragging

布尔值,表明用户是否开始滚动内容。

该属性持有的值可能需要滚动一段时间或距离才会被设定成YES。

indicatorStyle

滚动控制器的风格。

默认风格是UIScrollViewIndicatorStyleDefault。参见“Scroll Indicator Style”获取更多关于此常量的描述。

maximumZoomScale

浮点数,指定可被应用滚动视图内容的最大缩放因子。

该值规定了内容可被放大到多大。默认值为1.0。

minimumZoomScale

浮点数,指定可被应用滚动视图内容的最小缩放因子。

该值规定了内容可被缩小到多小。默认值为1.0。

pagingEnabled

布尔值,规定滚动视图是否可以翻页。

若该值为YES,滚动视图会在用户滚动时停止在滚动视图边框的整数倍处。默认值为NO。

panGestureRecognizer

当前用于滑动手势的手势识别器(只读)

在希望更加精确地控制被滚动视图识别的滑动手势时,你的应用程序可访问此属性。

pinchGestureRecognizer

当前用于扩张/收缩手势的手势识别器(只读)

在希望更加精确地控制被滚动视图识别的扩张/收缩手势时,你的应用程序可访问此属性。

scrollEnabled

布尔值,规定是否允许滚动。

若该属性的值为YES,允许滚动,若为NO,禁止滚动。默认值为YES。

当滚动被禁止时,滚动视图将不再接受触摸事件;滚动视图会将事件传送至响应链中。

scrollIndicatorInsets

表示滚动指示器从封闭滚动视图中被嵌入的距离。

默认值为UIEdgeInsetssZero。

scrollToTop

布尔值,控制滚动至顶部的手指是否有效。

滚动至顶部手势是触摸状态栏;当此属性为YES时,滚动视图在此手势发生时跳转至状态栏。此属性默认为YES。

该手势作用于单个可见的滚动视图;若有多个滚动视图(例如,日期选择器)设定了这个属性,或者若托管在scrollViewShouldScrollToTop:中返回了NO,UIScrollView会无视滚动到顶部的请求。在滚动视图滚动到内容视图的顶部之后,它会给托管发送一个scrollViewDidScrollToTop:信息。

showsHorizontalScrollIndicator

布尔值,控制是否水平滚动指示器可见。

默认值为YES。指示器会在跟踪时显示并在跟踪之后消失。

showsVerticalScrollIndicator

布尔值,控制是否垂直滚动指示器可见。

默认值为YES。指示器会在跟踪时显示并在跟踪之后消失。

tracking

返回用户是否触摸内容并初始化滚动。(只读)

若用户已触摸内容视图但可以还示开始拖动时该属性值为YES。

zoomBouncing

布尔值,表明缩放已超过了指定接收器的缩放限制。

若滚动视图缩放超出最大值或最小值时该值为YES;否则值为NO。

zooming

布尔值,表明内容视图当前是否在缩。

若用户发出了一个缩放手指,该值为YES,否则为NO。

zoomScale

浮点数,指定当前应用于滚动视图的内容的缩放因子。

该值规定了内容当前缩放了多少。默认值是1.0。

实例方法

flashScrollIndicators

短暂地显示滚动指示器。

你应该在把滚动视图放在最前端时调用此方法。

scrollRectToVisible:animated:

滚动内容的指定区域以便使内容在接受器中可见。

-(void)scrollRectToVisible:(CGRect)rectanimated:(BOOL)animated

参数:

rect

定义内容视图区域的矩形。

animated

若滚动应被动画化则传入YES,否则为NO。

该方法滚动内容视图以使rect中定义的区域可以刚好显示在滚动视图中。若区域已经是可见的,该方法什么也不做。

setContentOffset:animated:

设定内容视图原点相对于接收器原点的偏移。

- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated

参数

contentOffset

内容视图原点的偏移点(以点的形式表示)。

animated

若YES,用一个恒定的速度以动画形式移动到新的偏移处;NO则立即移动。

setZoomScale:animated:

浮点数,指定当前缩放因子。

- (void)setZoomScale:(float)scale animated:(BOOL)animated

参数

scale

要缩放内容到的新值。

animated

若YES,动画化缩放到时新的缩放大小,NO则立即缩放。

新的缩放值应在minnumZoomScale和maximumZoomScale之间。

iOS中的ScrollView

时间: 2024-07-31 14:32:41

iOS中的ScrollView的相关文章

iOS中的截屏(屏幕截屏及scrollView或tableView的全部截屏)

iOS中的截屏(屏幕截屏及scrollView或tableView的全部截屏) 2017.03.16 12:18* 字数 52 阅读 563评论 4喜欢 2 1. 截取屏幕尺寸大小的图片并保存至相册 保存至相册只需将方法saveImage中的代码替换即可 UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, YES, 0.0); [self.view.layer renderInContext:UIGraphicsGetCur

iOS中ScrollView(滚屏,引导界面,和判段是否是第一次登陆)

#import "RootViewController.h" #import "SecondViewController.h" #define kScreenWidth [UIScreen mainScreen].bounds.size.width #define kScreenHeight [UIScreen mainScreen].bounds.size.height #define kImageCount 6 #define kImageName @"

iOS中UIWebView的使用详解

iOS中UIWebView的使用详解 一.初始化与三种加载方式 UIWebView继承与UIView,因此,其初始化方法和一般的view一样,通过alloc和init进行初始化,其加载数据的方式有三种: 第一种: - (void)loadRequest:(NSURLRequest *)request; 这是加载网页最常用的一种方式,通过一个网页URL来进行加载,这个URL可以是远程的也可以是本地的,例如我加载百度的主页:     UIWebView * view = [[UIWebView al

iOS中创建数组的简易方法与手势的使用

其实做外包也是挺不错,虽然累点,但是一天天的知识的扩展不少,下面是今天的收获 ①初始化数组一字典的方法 @[] 初始化不可变数组 @{} 初始化不可变字典 ②手势的使用 iOS中处理手势之前是用四个方法: - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event - (void)touch

Android仿IOS回弹效果 ScrollView回弹 总结

Android仿IOS回弹效果  ScrollView回弹 总结 应项目中的需求  需要仿IOS 下拉回弹的效果 , 我在网上搜了很多 大多数都是拿scrollview 改吧改吧 试了一些  发现总有点小问题 下面的代码是我对大家发布的做了点小修改   觉得没太大问题 package com.example.myscrollview; import android.content.Context; import android.graphics.Rect; import android.util

iOS 运行时ScrollView上出现空白空间-解决方案

iOS7 中的UIViewControllers设置了automaticallyAdjustsScrollViewInsets.如果是YES,scrollview会根据status bar, navigation bar以及tool bar或者tab bar的高度自动调整.可以通过在storyboard的右侧进行设置,在Attributes Inspector中,不勾选"Adjust Scroll View Insets". 翻译自: http://stackoverflow.com/

ios7中使用scrollview来横向滑动图片,自动产生偏移竖向的偏移 问题

ios7中使用scrollview来横向滑动图片,自动产生偏移竖向的偏移 问题 如图红色为scrollview的背景色,在scrollview上加了图片之后,总会有向下的偏移 设置contentOffset也不管用 在ios7中controller有个 automaticallyAdjustsScrollViewInsets属性,默认为YES if (iOS7&&[self respondsToSelector:@selector(automaticallyAdjustsScrollVie

iOS 中有用的开源库

youtube下载神器:https://github.com/rg3/youtube-dl vim插件:https://github.com/Valloric/YouCompleteMe vim插件配置:https://github.com/spf13/spf13-vim ----------------Mac完整项目---------- 电台:https://github.com/myoula/sostart ----------------iOS完整项目---------------- 1,

iOS中几种数据持久化方案

概论 所谓的持久化,就是将数据保存到硬盘中,使得在应用程序或机器重启后可以继续访问之前保存的数据.在iOS开发中,有很多数据持久化的方案,接下来我将尝试着介绍一下5种方案: plist文件(属性列表) preference(偏好设置) NSKeyedArchiver(归档) SQLite 3 CoreData 沙盒 在介绍各种存储方法之前,有必要说明以下沙盒机制.iOS程序默认情况下只能访问程序自己的目录,这个目录被称为"沙盒". 1.结构 既然沙盒就是一个文件夹,那就看看里面有什么吧