UIScrollView详解
1.UIScrollView常用属性
- contentSize属性--该属性表示滚动的内容的范围大小,是CGPoint类型的。
说明:
- 默认超出UIScrollView的可视区域的内容是不显示的。相当于有:xxx.clipsToBounds = YES;
- UIScrollView滚动的是它里面的内容,该控件对象它本身位置是不动的。
- 如果设置的contentSize的尺寸小于或等于UIScrollView对象的尺寸,那么表现是不可滚动的。
bounces属性--弹簧效果。
说明:
- 因为弹簧效果看到的是内容额外的区域,所以不属于UIScrollView的contentSize区域内容。
- 不管有没有设置内容大小contentSize,也可以添加弹簧效果;如:下拉刷新、上拉加载等
- alwaysBouncesHorizontal--是否总有水平方向上的弹簧效果
- alwaysBouncesVertial--是否总有垂直方向上的弹簧效果
说明:
- 不管有没有设置内容大小contentSize,总是可以通过此属性来添加弹簧效果;如:下拉刷新、上拉加载等
- 该属性默认值为NO;
- showsHorizonalScrollIndicator--是否让水平滚动条显示,默认值YES
- showsVertialScrollIndicator--是否让垂直方向滚动条显示,默认值YES
注意:
- 用storyboard常见UIScrollView对象时,这两个滚动条一直在该UIScrollView对象的子控件数组中,且索引值不确定;
- 用代码创建UIScrollView对象时,不管有没有设置contentSize属性,这两个滚动条总不在该UIScrollView对象的子控件数组中。
- contentOffset----可设置和获取内容当前的位置
说明:contentOffset此属性的值为:scrollView的左上角的坐标减去内容的左上角的位置,不管有没有给contentInset属性设置,该值得算法总是如此。
- contentInset----给内容添加额外的显示区域。如歌词页面中,一般从页面中间开始显示歌词。
2.UIScrollView常见的代理属性
说明:
- 首先要遵守UIScrollViewDelegate协议,实现其中的必须实现的方法,然后赋值成为UIScrollView对象的代理即可。
- UIScrollViewDelegate协议中的方法,只需实现后放在就行。系统会自动调用,而不用手动调用。
- 实现代理方法时,只需知道这些方法是干什么的、什么时候调用即可。
- - (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详解的更多相关文章
- iOS回顾笔记(04) -- UIScrollView的基本使用详解
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,bi ...
- iOS - UIScrollView 相关属性代理详解
一.UIScrollView的属性和代理方法详解 属性: - (void)viewDidLoad { [super viewDidLoad]; _scrollView.backgroundColor ...
- iOS:核心动画的详解介绍:CAAnimation(抽象类)及其子类
核心动画的详解介绍:CAAnimation(抽象类) 1.核心动画基本概念 Core Animation是一组非常强大的动画处理API,使用它能做出非常炫丽的动画效果,而且往往是事半功倍! 使用它 ...
- iOS开发——UI篇&ScrollView详解
创建方式 1:StoryBoard/Xib 这里StoarBoard就不多说,直接拖就可以,说太多没意思,如果连这个都不会我只能先给你跪了! 2:代码: CGRect bounds = [ [ UIS ...
- ScrollView详解
创建方式 1:StoryBoard/Xib 这里StoarBoard就不多说,直接拖就可以,说太多没意思,如果连这个都不会我只能先给你跪了! 2:代码: 1 2 3 CGRect bounds = [ ...
- iOS开发——UI篇OC篇&UICollectionView详解+实例
UICollectionView详解+实例 实现步骤: 一.新建两个类 1.继承自UIScrollView的子类,比如HMWaterflowView * 瀑布流显示控件,用来显示所有的瀑布流数据 2. ...
- iOS开发——屏幕适配篇&Masonry详解
Masonry详解 前言 MagicNumber -> autoresizingMask -> autolayout 以上是纯手写代码所经历的关于页面布局的三个时期 在iphone1-ip ...
- 详解Objective-C中委托和协议
Objective-C委托和协议本没有任何关系,协议如前所述,就是起到C++中纯虚类的作用,对于“委托”则和协议没有关系,只是我们经常利用协议还实现委托的机制,其实不用协议也完全可以实现委托. AD: ...
- 详解iOS开发之自定义View
iOS开发之自定义View是本文要将介绍的内容,iOS SDK中的View是UIView,我们可以很方便的自定义一个View.创建一个 Window-based Application程序,在其中添加 ...
随机推荐
- autoit 中_GUICtrlStatusBar_SetBkColor失效的解决办法
#include <GuiConstantsEx.au3> #include <GuiStatusBar.au3> #include <WinAPI.au3> #i ...
- win32手动创建windows窗口的,小记
摘抄自文档,其中的函数需要以后花时间看 向 WinMain 添加功能 首先,在 WinMain 函数内部创建 WNDCLASSEX 类型的窗口类结构. 此结构包含有关窗口的信息,如应用程序图标.窗口的 ...
- 全局修改Lable/Button字体
本次版本需求要把原来的字体全改掉,由于项目中有的是代码创建的,有的是XIB中直接改的,一个一个改工作量太大,使用运行时可以很轻松的实现 首先,项目中大多数设置字体的控件有 Lable, ...
- JS,Jquery获取各种屏幕的宽度和高度
Javascript: 网页可见区域宽: document.body.clientWidth网页可见区域高: document.body.clientHeight网页可见区域宽: document.b ...
- C++学习基础四——顺序容器和关联容器
—顺序容器:vector,list,queue1.顺序容器的常见用法: #include <vector> #include <list> #include <queue ...
- redis:hash 数据类型
简介 Redis Hashes是字符串字段和字符串值之间的映射,所以它们是完美的表示对象(eg:一个有名,姓,年龄等属性的用户)的数据类型.新建一个hash对象时开始是用zipmap(又称为small ...
- delphi 10 seattle 安卓服务开发(三)
delphi 10 里面的安卓服务有四种,上面的一篇文章里面的图有介绍. 今天做一个remote service 的例子.(里面一部分代码是抄别人的,如果不太清楚,自行恶补) remote servi ...
- ADAS技术应用
ADAS技术应用: LDW:Lane Departure Warning 车道偏离警告VD: Vihicle Detection 车辆检测FCW: Front Collision Warning 前向 ...
- NLPP-02-Exercises
<PYTHON自然语言处理>第2章 内容简介:各种文本语料库. 古腾堡项目 www.gutenberg.org OLAC元数据格式档 http://www.language-archive ...
- MySql Host is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts' 解决方法
环境:linux,mysql5.5.21 错误:Host is blocked because of many connection errors; unblock with 'mysqladmin ...