1.UIScrollView常用属性

  • contentSize属性--该属性表示滚动的内容的范围大小,是CGPoint类型的。

说明:

  1. 默认超出UIScrollView的可视区域的内容是不显示的。相当于有:xxx.clipsToBounds = YES;
  2. UIScrollView滚动的是它里面的内容,该控件对象它本身位置是不动的。
  3. 如果设置的contentSize的尺寸小于或等于UIScrollView对象的尺寸,那么表现是不可滚动的。

  • bounces属性--弹簧效果。

说明:

  1. 因为弹簧效果看到的是内容额外的区域,所以不属于UIScrollView的contentSize区域内容。
  2. 不管有没有设置内容大小contentSize,也可以添加弹簧效果;如:下拉刷新、上拉加载等

  • alwaysBouncesHorizontal--是否总有水平方向上的弹簧效果
  • alwaysBouncesVertial--是否总有垂直方向上的弹簧效果

说明:

  1. 不管有没有设置内容大小contentSize,总是可以通过此属性来添加弹簧效果;如:下拉刷新、上拉加载等
  2. 该属性默认值为NO;

  • showsHorizonalScrollIndicator--是否让水平滚动条显示,默认值YES
  • showsVertialScrollIndicator--是否让垂直方向滚动条显示,默认值YES

注意:

  1. 用storyboard常见UIScrollView对象时,这两个滚动条一直在该UIScrollView对象的子控件数组中,且索引值不确定;
  2. 用代码创建UIScrollView对象时,不管有没有设置contentSize属性,这两个滚动条总不在该UIScrollView对象的子控件数组中。

  • contentOffset----可设置和获取内容当前的位置

说明:contentOffset此属性的值为:scrollView的左上角的坐标减去内容的左上角的位置,不管有没有给contentInset属性设置,该值得算法总是如此。

  • contentInset----给内容添加额外的显示区域。如歌词页面中,一般从页面中间开始显示歌词。

2.UIScrollView常见的代理属性

说明:

  1. 首先要遵守UIScrollViewDelegate协议,实现其中的必须实现的方法,然后赋值成为UIScrollView对象的代理即可。
  2. UIScrollViewDelegate协议中的方法,只需实现后放在就行。系统会自动调用,而不用手动调用。
  3. 实现代理方法时,只需知道这些方法是干什么的、什么时候调用即可。
  • - (void)scrollViewDidScroll:(UIScrollView *)scrollView;

注:any offset changes。一旦监听到offset值变化,就调用此方法。说白了就是,在滚动着的时候调用此方法;


  • - (void)scrollViewDidZoom:(UIScrollView *)scrollView NS_AVAILABLE_IOS(3_2); // any zoom scale changes

注:called on start of dragging (may require some time and or distance to move)


  • - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;

注:called on finger up if the user dragged. velocity is in points/millisecond. targetContentOffset may be changed to adjust where the scroll view comes to rest。

当用户用手指将要开始拖拽scrollView时就调用此方法。


  • - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset NS_AVAILABLE_IOS(5_0);

// called on finger up if the user dragged. decelerate is true if it will continue moving afterwards

当用户拖拽过程中,手指突然抬起,将要结束拖拽scrollView的时候调用此方法。


  • - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;

当用户已停止拖拽scrollView的时候,调用此方法。


  • - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;   // called on finger up as we are moving

当scrollView将要开始减速的时候,调用此方法。


  • - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;      // called when scroll view grinds to a halt

当scrollView减速到0,即停止时调用次方发。


  • - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView; // called when setContentOffset/scrollRectVisible:animated: finishes. not called if not animating

  • - (nullable UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;     // return a view that will be scaled. if delegate returns nil, nothing happens

  • - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view NS_AVAILABLE_IOS(3_2); // called before the scroll view begins zooming its content

  • - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale; // scale between minimum and maximum. called after any 'bounce' animations

  • - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;   // return a yes if you want to scroll to the top. if not defined, assumes YES

  • - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;      // called when scrolling animation finished. may be called immediately if already at top

UIScrollView详解的更多相关文章

  1. iOS回顾笔记(04) -- UIScrollView的基本使用详解

    html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...

  2. iOS - UIScrollView 相关属性代理详解

    一.UIScrollView的属性和代理方法详解 属性: - (void)viewDidLoad { [super viewDidLoad]; _scrollView.backgroundColor ...

  3. iOS:核心动画的详解介绍:CAAnimation(抽象类)及其子类

    核心动画的详解介绍:CAAnimation(抽象类)   1.核心动画基本概念 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍! 使用它 ...

  4. iOS开发——UI篇&ScrollView详解

    创建方式 1:StoryBoard/Xib 这里StoarBoard就不多说,直接拖就可以,说太多没意思,如果连这个都不会我只能先给你跪了! 2:代码: CGRect bounds = [ [ UIS ...

  5. ScrollView详解

    创建方式 1:StoryBoard/Xib 这里StoarBoard就不多说,直接拖就可以,说太多没意思,如果连这个都不会我只能先给你跪了! 2:代码: 1 2 3 CGRect bounds = [ ...

  6. iOS开发——UI篇OC篇&UICollectionView详解+实例

    UICollectionView详解+实例 实现步骤: 一.新建两个类 1.继承自UIScrollView的子类,比如HMWaterflowView * 瀑布流显示控件,用来显示所有的瀑布流数据 2. ...

  7. iOS开发——屏幕适配篇&Masonry详解

    Masonry详解 前言 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-ip ...

  8. 详解Objective-C中委托和协议

    Objective-C委托和协议本没有任何关系,协议如前所述,就是起到C++中纯虚类的作用,对于“委托”则和协议没有关系,只是我们经常利用协议还实现委托的机制,其实不用协议也完全可以实现委托. AD: ...

  9. 详解iOS开发之自定义View

    iOS开发之自定义View是本文要将介绍的内容,iOS SDK中的View是UIView,我们可以很方便的自定义一个View.创建一个 Window-based Application程序,在其中添加 ...

随机推荐

  1. 解决【win10管理员已阻止程序运行】问题时有感

    今天在安装loadrunner11的时候点击setup弹出以下报错 然后试了很多方法,从网上找了各种解决方案:修改UAC.修改本地组策略,均未解决ps:本人电脑是win10家庭中文版. 研究了半天未果 ...

  2. Linux操作系统奥秘01-系统引导(MBR - 硬盘的0磁道)

    Boot:1.系统PowerOn 2.BIOS在完成硬件初始化以及POST 3.BIOS加载MBR 4.GRUB->GRUB or kernal MBR MBR即主引导记录,是在BIOS中选择的 ...

  3. AS

    1.修改注释模板: “File“->“Settings”    File and Code Templates     然后选中Includes tab下面的File Header. 2.代码提 ...

  4. 关于delphi 中 Sender的学习

    sender是 事件的触发者,我发现所有的组件的事件 基本上都是 传Sender. 示例效果图: 代码: 接着来,既然TButton是个类,且publish哪里有事件,我们也可以看看这个事件的原型.

  5. TIJ读书笔记06-终结清理和垃圾回收

    TIJ读书笔记06-终结清理和垃圾回收 finalize()方法 垃圾回收器如何工作 java的垃圾回收是由jvm来控制的.所以需要java程序员参与的部分不是很多. 但是在这里需要明白一点,java ...

  6. Binder的设计和框架

    转自:http://wangkuiwu.github.io/2014/09/01/Binder-Introduce/ 1. Binder架构解析 1.1 Binder模型 上图中涉及到Binder模型 ...

  7. jsoncpp操作 json

    jsoncpp操作 json 博客分类: c/c++ object-c 之 iphone   #include <iostream> //#include "json/json. ...

  8. UART IP和UVM的验证平台

    UART是工程师在开发调试时最常用的工具的,其通信协议简单.opencores 网站提供了兼容16550a的UART IP其基本特性如下: uart16550 is a 16550 compatibl ...

  9. 【原】JS正则表达式里的控制符

    正则表达式易于使用而又让人费解,乍一看上去,就像是一行行的乱码,但是它的功能确实又不容小觑.今天整理正则时,纠正了自己的一个误解. 先缕一缕: 正则表达式的两种声明方式: 字面量.构造器 (RegEx ...

  10. css部分的复习

    常见的块元素有<h1><h6>.<p><div><ul><li><ol>等,其中<div>标记是最典型的 ...