ScrollView分析

本文转载至 http://blog.sina.com.cn/s/blog_a843a8850101dsg5.html

Properties

alwaysBounceHorizontal          //一个布尔值,决定是否弹跳总是出现水平滚动时达到结束内容的看法。默认值是NO 。

@property(nonatomic) BOOL alwaysBounceHorizontal       //如果这个属性被设置为YES而且bounces的值是YES,水平拖动是允许的内容,即使小于滚动视图的边界。默认值是NO

alwaysBounceVertical            //一个布尔值,决定是否反弹总是发生在垂直滚动到达结束内容。默认值是NO 。

@property(nonatomic) BOOL alwaysBounceVertical  // //如果这个属性被设置为YES而且bounces的值是YES,垂直拖动是允许的内容,即使小于滚动视图的边界。默认值是NO

bounces                                 //控制滚动视图是否反弹过去内容的边缘,然后再返回一个布尔值。

@property(nonatomic) BOOL bounces           //默认值是YES 。

bouncesZoom                      //一个布尔值,决定当缩放超过上限或下限时是否滚动视图推动内容缩放。

@property(nonatomic) BOOL bouncesZoom            //如果这个属性的值是YES并且变焦缩放超过上限或下限,返回他们之前滚动视图暂时缩放内容。如果这属性是NO,立即停止在一个比例限制缩放。默认是YES。

canCancelContentTouches   //一个布尔值,控制是否涉及到的内容视图中总是导致跟踪。

@property(nonatomic) BOOL canCancelContentTouches

contentInset        //内容视图的距离,是从封闭的滚动视图插图。

@property(nonatomic) UIEdgeInsets contentInset   //使用这个属性添加到周围滚动区域的内容。大小的单位是点。默认值是UIEdgeInsetsZero 。

contentOffset      //在哪个点的内容视图的起源是从滚动视图的原点偏移

@property(nonatomic) CGPoint contentOffset       //默认值为CGPointZero

contentSize       //内容视图的大小。

@property(nonatomic) CGSize contentSize            //大小的单位是点。默认大小CGSizeZero的。

decelerating   //返回的内容是否在滚动视图后,用户解除他们的手指。 (只读)

@property(nonatomic, readonly, getter=isDecelerating) BOOL decelerating  //如果用户不拖动内容但滚动事件仍发生 ,返回的值是YES。

decelerationRate    //一个浮点值,确定在用户解除他们的手指后的减速率。

@property(nonatomic) float decelerationRate    //使用的UIScrollViewDecelerationRateNormal和UIScrollViewDecelerationRateFas常数作为合理减速率的参考点。

delaysContentTouches     //一个布尔值,决定是否推迟滚动视图触摸手势的处理。

@property(nonatomic) BOOL delaysContentTouches   //如果这个属性的值是YES ,滚动视图延误处理的触摸式的姿态,直到它可以决定

是否滚动是意图。如果该值是NO,滚动视图立即调用touchesShouldBegin : withEvent:inContentView :默认值是YES 。

delegate         //滚动视图对象的代表。

@property(nonatomic, assign) id delegate   //该委托必须采取UIScrollViewDelegate的协议。 UIScrollView的类调用委托实现每个协议的方法,它不保留委托。

directionalLockEnabled       //一个布尔值,决定是否在某一特定方向禁用滚动

@property(nonatomic, getter=isDirectionalLockEnabled) BOOL directionalLockEnabled  //如果此属性是NO,则滚动允许在水平和垂直方向。若是YES,则只在使用者最开始滚动的方向上进行(水平或垂直),若开始滚动是沿对角线方向的则可任意方向滚动。默认值是NO。

dragging       //一个布尔值,指示用户是否已经开始滚动内容。 (只读)

@property(nonatomic, readonly, getter=isDragging) BOOL dragging   /在它被设置为YES之前,这个属性的值可能需要一些时间或滚动的距离

indicatorStyle     //滚动指标的风格。

@property(nonatomic) UIScrollViewIndicatorStyle indicatorStyle  //默认的风格UIScrollViewIndicatorStyleDefault 。详见 “Scroll Indicator Style”

说明这些常数

maximumZoomScale    //一个浮点值指定可用于滚动视图的内容的最大规模的因素。

@property(nonatomic) float maximumZoomScale //此值确定多大的内容可以扩展。它必须大于最小缩放比例缩放才能启用。默认值是1.0 。

Discussion

minimumZoomScale       浮点值,指定可应用于滚动视图的内容的最低比例因子

@property(nonatomic) float minimumZoomScale   //此值决定如何可以缩放小内容。默认值是1.0

pagingEnabled   //一个布尔值,决定是否启用分页滚动视图。

@property(nonatomic, getter=isPagingEnabled) BOOL pagingEnabled //如果这个属性的值是YES,当用户滚动时,滚动视图停止滚动视图的边界的倍数。默认值是NO 。

panGestureRecognizer     //泛手势的基本手势识别。 (只读)

@property(nonatomic, readonly) UIPanGestureRecognizer *panGestureRecognizer //你的应用程序访问此属性,当它希望能够通过滚动视图更精确地控制泛手势确认。

pinchGestureRecognizer        //捏的基本的手势识别。 (只读)

@property(nonatomic, readonly) UIPinchGestureRecognizer *pinchGestureRecognizer //你的应用程序访问此属性时,它希望能够通过滚动视图更精确地控制捏手势确认。

scrollEnabled         //一个布尔值,决定是否启用滚动。

@property(nonatomic, getter=isScrollEnabled) BOOL scrollEnabled    //如果这个属性的值是YES ,滚动启用,如果它是NO,滚动被禁用。默认值是YES。  被禁用滚动时,滚动视图不接受触摸事件,将其转发响应链。

scrollIndicatorInsets      //滚动指标点到滚动视图的边缘的距离。

@property(nonatomic) UIEdgeInsets scrollIndicatorInsets    //默认值为UIEdgeInsetsZero

scrollsToTop     //一个布尔值,控制是否滚动到顶部的姿态是有效的

@property(nonatomic) BOOL scrollsToTop    //当设为YES,发生这种姿态时滚动视图跳转到内容顶端,此属性的默认值是YES 。

showsHorizontalScrollIndicator       //一个布尔值,控制水平滚动指标是否是可见的。

@property(nonatomic) BOOL showsHorizontalScrollIndicator //默认值是YES 。指标是可见的,而跟踪正在进行,结束后淡出。

showsVerticalScrollIndicator          //一个布尔值,控制垂直滚动指标是否是可见的。

@property(nonatomic) BOOL showsVerticalScrollIndicator   ////默认值是YES 。指标是可见的,而跟踪正在进行,结束后淡出。

tracking     //返回判断是否用户触碰内容触发滚动 (只读)

@property(nonatomic, readonly, getter=isTracking) BOOL tracking   //如果用户已经触及的内容视图但可能还没有开始拖动它。这个属性的值便是YES

zoomBouncing      // 一个布尔值,指示缩放已超过指定的接收范围。 (只读)

@property(nonatomic, readonly, getter=isZoomBouncing) BOOL zoomBouncing //这个属性的值是YES如果滚动视图缩放回最小或最大变焦缩放值;否则值为NO 。

zooming     //一个布尔值,指示内容是否认为正在放大或缩小。 (只读)

@property(nonatomic, readonly, getter=isZooming) BOOL zooming   //如果用户缩放手势,否则它是没有这个属性的值是YES

zoomScale   //一个浮点值,指定目前用于滚动视图的内容的比例因子。

@property(nonatomic) float zoomScale          //此值确定多少内容目前正在缩放。默认值是1.0

Instance Methods

flashScrollIndicators      //暂时显示滚动指标。

- (void)flashScrollIndicators   //当你把滚动视图移动到前面,你应该调用此方法。

scrollRectToVisible:animated:  //滚动一个特定区域的内容以便它在接收是可见的

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated      //此方法滚动查看内容,以便由rect定义的区域仅仅是滚动视图内是可见的。如果该地区已是可见的,该方法什么都不做。

参数:

rect                 //定义一个矩形面积的内容视图。

animated        //YES if the scrolling should be animated, NO if it should be immediate.

setContentOffset:animated:      设置从内容视图的原点偏移对应接收机的起源

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

参数:

contentOffset    //从内容视图的原点偏移的一个点

animated           YES表示以一个恒定的速度过渡到新的偏移,NO表示立即到达

setZoomScale:animated:    //一个浮点数指定当前的缩放比例

- (void)setZoomScale:(float)scale animated:(BOOL)animated  //新的值应该在是minimumZoomScale和maximumZoomScale之间

参数:

scale         //缩放内容的新的值。

animated    //YES推动过渡到新的规模, NO 以使立即过渡。

touchesShouldBegin:withEvent:inContentView:    //自定义默认行为,当手指触摸在显示的内容由子类重写。

- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view  //UIScrollView的默认行为是调用触摸事件发生的UIResponder的事件处理方法的目标子视图

参数:

touches     //一个涉及的UITouch实例集代表表示事件的开始阶段

event        //代表在触摸触摸对象属于事件的对象。

view          //在内容中发生触摸手势子视图。

Return Value     //返回NO ,如果你不想滚动视图发送的事件消息查看。如果你想以接收这些消息,返回YES (默认) 。

touchesShouldCancelInContentView:     //返回是否取消有关的内容子视图的接触,并开始拖动。

- (BOOL)touchesShouldCancelInContentView:(UIView *)view  //它开始发送跟踪邮件的内容视图后动视图调用此方法。如果它从这种方法收到NO便停止拖动和转发触摸事件的内容子视图。滚动视图不调用此方法如果canCancelContentTouches 属性值是NO

参数:

view        在内容中被触发的视图对象

Return Value    //YES取消进一步触控消息查看,NO查看继续收到这些消息。如果视图认为是不是一个UIControl对象默认YES,否则返回NO

zoomToRect:animated:    //缩小到特定区域的内容,所以它是在接收器中可见。

- (void)zoomToRect:(CGRect)rect animated:(BOOL)animated   //这种方法调整的zoomScale进行必要的缩放以便使内容视图成为由矩形定义的区域

rect          //矩形定义内容视图区

animated          //YES if the scrolling should be animated, NO if it should be immediate.

Constants

Scroll Indicator Style

typedef enum {  //指示器风格设置

UIScrollViewIndicatorStyleDefault,      //默认,

UIScrollViewIndicatorStyleBlack,         //适用于白色内容背景

UIScrollViewIndicatorStyleWhite

} UIScrollViewIndicatorStyle;

Deceleration Constants   //减速常数

The rate of deceleration for a scrolling view.

{

const float UIScrollViewDecelerationRateNormal;    //默认减速率

const float UIScrollViewDecelerationRateFast;

}

时间: 2024-11-11 04:15:04

ScrollView分析的相关文章

从ScrollView嵌套EditText的滑动事件冲突分析触摸事件的分发机制以及TextView的简要实现和冲突的解决办法

本篇文章假设读者没有任何的触摸事件基础知识,所以我们会从最基本的触摸事件分发处说起. ScrollView为什么会出现嵌套EditText出现滑动事件冲突呢?相信你会有这种疑问,我们来看这么一种情况: 有一个固定高度的EditText,假设它只能显示3行文本,但是,我们在其中输入的文本多余三行时,那么这时就需要可以在EditText内部进行小幅滚动了.那么将这个EditText放入了ScrollView当中, 并且ScrollView内容过多以致ScrollView也可以滑动,这时候就会出现Ed

[Android实例] Scroll原理-附ScrollView源码分析 (转载)

想象一下你拿着放大镜贴很近的看一副巨大的清明上河图, 那放大镜里可以看到的内容是很有限的, 而随着放大镜的上下左右移动,就可以看到不同的内容了 android中手机屏幕就相当于这个放大镜, 而看到的内容是画在一个无限大的画布上~ 画的内容有限, 而手机屏幕可以看到的东西更有限~ 但是背景画布是无限的 如果把放大镜的移动比作scroll操作,那么可以理解,这个scroll的距离是无限制的~ 只不过scroll到有图的地方才能看到内容 参考ScrollView理解, 当child内容过长时,有一部分

开源中国 OsChina Android 客户端源码分析(3)可以拖拽的ScrollView

oschina客户端滑动菜单的View的布局使用了可以拖拽的ScrollView,类文件为CustomerScrollView. 1 我们需要分析下为什么要用ScrollView?用过的其实很容易理解避免其内部的子View的布局较大,在较小设备上无法完全显示. 2实现可拖拽的效果,只是从用户体验角度去考虑的,接下来我们详细分析下其自定义的ScrollView. 2.1拖拽的目标是ScrollView内的菜单的布局View,所以在CustomerScrollView内的onFinishInflat

ScrollView(RecyclerView等)为什么会自动滚动原理分析,还有阻止自动滑动的解决方案

引言,有一天我在调试一个界面,xml布局里面包含Scroll View,里面嵌套了recyclerView的时候,界面一进去,就自动滚动到了recyclerView的那部分,百思不得其解,上网查了好多资料,大部分只是提到了解决的办法,但是对于为什么会这样,都没有一个很好的解释,本着对技术的负责的态度,花费了一点时间将前后理顺了下 1.首先在包含ScrollView的xml布局中,我们在一加载进来,ScrollView就自动滚动到获取焦点的子view的位置,那我们就需要看下我们activity的o

ScrollView分栏视图分析

代码精华部分如下: //1.添加scrollView /* 1). 添加一个scrollView; 2).创建关注.热门.附近三个控制器. 3). 存储它们的名字到数组中,遍历并放到本控制器里. 4).设置scrollView的contentSize. 5).设置scrollview的偏移量. 6).调用当停止动画的方法设置为当前的scrollView.(应该是停止拖拽的方法)*/ NSArray *controls = @[@"STRFollowViewController",@&q

Android:ScrollView+SwipeRefreshLayout组合使用下的一个Bug分析

今天组里的同事要做一个奇葩的效果,要求在ScrollView里嵌套一个RefreshLayout.类似代码如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" a

Android控件分析-ScrollView

首先设置 setOverScrollMode(OVER_SCROLL_NEVER); // );//去掉ScrollView 滑动到底部或顶部 继续滑动时会出现渐变的蓝色颜色快 init(... ...         if (null != attrs) {             TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.PullScrollView);             if (ta != nu

ScrollView 重点分析

打开ScrollView,跟我一起看源码. 重点1:ScrollView中的container : Node* 的锚点AnchorPoint是被重置为Vec2(0,0),也就是设置大地图的时候要求用左下角作为依赖的参照点.但是,看看Layer的源码, // Layer Layer::Layer() : _touchEnabled(false) , _accelerometerEnabled(false) , _keyboardEnabled(false) , _touchListener(nul

新知食APP架构分析--北京食物科技有限公司旗下产品

俗话说不打无准备之仗,这次真是有点懵逼了,建议大家去面试的时候,尤其是去小型互联网公司的时候,如果你想比其他人有竞争力,那么你要研究一下当前他的公司正在开发产品,他们的业务类型是什么样的,比如他们公司正在开发xxxApp,你可以花费两天时间,做一个xxxApp的demo,等去面试的时候,你就可以有底气的说,我研究了一下贵公司的业务,对贵公司的产品很感兴趣,顺便做了个demo,然后你把打包好的app在你手机上运行一下,给技术看一下,基本上这份offer就属于你的了,一定要做事前要谋一下,古话说万事