文档章节

UIScrollView的常见属性和方法

哪一种黑
 哪一种黑
发布于 2016/02/29 21:01
字数 1116
阅读 33
收藏 0
点赞 1
评论 2

二、UIScrollView 的常见属性
1、contentSize
// default CGSizeZero
@property(nonatomic)  CGSize  contentSize;
1.1
contentSize 的含义:
告诉 UIScrollView 要展示的内容实际有多大,也就是告诉UIScrollView滚动的范围。
1.2
如果UIScrollView无法滚动,可能是以下原因:
1)没有设置contentSize;
2)scrollEnabled = NO;
3)没有接收到触摸事件:userInteractionEnabled = NO。
1.3
UIScrollView的 frame.size 与  contentSize 的区别?
frame.size  指的是: UIScrollView 的可视区域的大小, UIScrollView本身的大小。
contentSize 指的是: UIScrollView 中所包含的子控件的大小(要滚动的实际内容的大小)。
如果需要滚动, contentSize 要比 frame.size 大。
2、contentOffset
// default CGPointZero
@property(nonatomic)  CGPoint  contentOffset;
2.1
contentOffset 的含义:
当UIScrollView内部的内容滚动时, 内容相对于UIScrollView左上角的偏移,也就是内容滚动到了什么位置。
2.2
可以通过代码来设置这个属性的值,来实现滚动。同时可以使用下面的这个方法增加动画效果的滚动。
// animate at constant velocity to new offset
- (void)setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated;

3、 contentInset
// default UIEdgeInsetsZero. add additional scroll area around content
@property(nonatomic) UIEdgeInsets  contentInset;
3.1
contentInset 的含义:
UIScrollView 的内容的内边距,即内容距离UIScrollView的内边距。
3.2
如下图所示,黄色区域为控制器的 view,蓝色区域为 UIScrollView,灰色区域是一张大图,滚动大图的左上角的地方,显示出距离为 20 的蓝色区域就是设置了内边距的效果。
self.scrollView.contentInset = UIEdgeInsetsMake(20, 20, 20, 20);

4、上述属性的总结
下面一张图总结 UIScrollView 的属性:


5、其他常用属性
// 弹簧效果 default YES. if YES, bounces past edge of content and back again
@property(nonatomic) BOOL  bounces;
// 是否能滚动 default YES. turn off any dragging temporarily
@property(nonatomic,getter=isScrollEnabled) BOOL scrollEnabled;
// 是否显示水平滚动条 default YES. show indicator while we are tracking. fades out after tracking
@property(nonatomic) BOOLshowsHorizontalScrollIndicator;
// 是否显示垂直滚动条 default YES. show indicator while we are tracking. fades out after tracking
@property(nonatomic) BOOL showsVerticalScrollIndicator;

三、UIScrollView 的代理
1、代理可以干什么?
当 UIScrollView 进行滚动操作时,会自动通知它的代理(delegate)对象,给它的代理发送相应的消息,让代理得知它的滚动情况。通过代理我们可以获取当前滚动的位置:scrollView.contentOffset;也可以监听滚动事件。
2、代理方法
// any offset changes
// 只要 scrollView 滑动就会触发 ( 会触发多次 )
- (void)scrollViewDidScroll:(UIScrollView *)scrollView;                                               
// called on start of dragging (may require some time and or distance to move)
// 当将要拖拽 scrollView 时触发 , 手指接触 scrollView 并且将要滑动时触发
- (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
// 当结束拖拽时触发 ( 手指将要离开屏幕 )
- (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
// 当结束拖拽时触发 ( 手指已经离开屏幕 )
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
// called on finger up as we are moving
// 当 scrollView 滑动将要减速时触发 ( 将要停止 )
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;
// called when scroll view grinds to a halt  
// 当 scrollView 结束减速时触发 ( 停止滑动 )
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;      
// called when setContentOffset/scrollRectVisible:animated: finishes. not called if not animating
// 当设置 scrollView, 有动画效果时触发
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;
// return a yes if you want to scroll to the top. if not defined, assumes YES
// 只有当 scrollsToTop 属性设置为 YES 时 , 该方法才会触发 , 进一步询问点击状态条是否有效
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;
// called when scrolling animation finished. may be called immediately if already at top
// 当点击状态条并且 scrollView 滑动到顶端时触发
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView;
下面是跟缩放有关的代理方法:
// return a view that will be scaled. if delegate returns nil, nothing happens
//  返回要缩放的view , 只能是子视图 , 不能是 scrollView 本身
- (nullable UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;   
// called before the scroll view begins zooming its content
// 当将要开始缩放时触发
- (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(nullableUIView *)view NS_AVAILABLE_IOS(3_2);
// scale between minimum and maximum. called after any 'bounce' animations
// 当结束缩放时触发
- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(nullable UIView *)view atScale:(CGFloat)scale;
// any zoom scale changes
// 只要 scrollView 缩放就会触发
- (void)scrollViewDidZoom:(UIScrollView *)scrollView NS_AVAILABLE_IOS(3_2);
3、UIScrollView 的缩放
3.1 设置最大放大倍数和最小缩小倍数
self.scrollView.maximumZoomScale = 3;
self.scrollView.minimumZoomScale = 0.3;
3.2 UIScrollView 的缩放原理
当用户在UIScrollView身上使用捏合手势时,UIScrollView会调用代理的viewForZoomingInScrollView:方法,这个方法返回的控件就是需要进行缩放的控件。需要注意的是:UIScrollView 一次只能缩放一个子控件。

© 著作权归作者所有

共有 人打赏支持
哪一种黑
粉丝 8
博文 11
码字总数 9722
作品 0
昌平
加载中

评论(2)

哪一种黑
哪一种黑

引用来自“BillyJack”的评论

你的图片没显示出来
纯手打,这都是一些简单的属性 没有弄图片.谢谢提醒 以后更新会注意
BillyJack
BillyJack
你的图片没显示出来
IOS UIScrollView详解 & 图片缩放功能

一 UIScrollView 简介 UIScrollView是能滚动的视图控件,可以通过滚动的方式来展示类容。 二 UIScrollView常见属性 //设置UIScrollView滚动的位置@property(nonatomic) CGPoint contentOffse...

卧龙小
2015/01/05
0
2
iOS程序-UIScrollView的基本使用

方法/步骤 常见属性 CGSize contentSize :设置UIScrollView的滚动范围 CGPoint contentOffset :UIScrollView当前滚动的位置 UIEdgeInsets contentInset :这个属性可以在四周增加滚动范围 ...

hejunbinlan
2016/06/22
3
0
ios UIScrollView

常见属性 CGSize contentSize :设置UIScrollView的滚动范围 CGPoint contentOffset :UIScrollView当前滚动的位置 UIEdgeInsets contentInset :这个属性可以在四周增加滚动范围 其他属性 ...

_pioneer_
2016/01/15
29
0
UIScrollView 常见属性 手势缩放 分页效果

一、 基本使用 作用 UIScrollView可以用于显示多于一个屏幕的内容,超出屏幕范围的内容可以通过滑动进行查看 常见属性  CGSize contentSize :设置UIScrollView的滚动范围  CGPoint cont...

CEOIOS
2015/01/29
0
1
UIScrollView 常见属性 手势缩放 分页效果

一、 基本使用1. 作用UIScrollView可以用于显示多于一个屏幕的内容,超出屏幕范围的内容可以通过滑动进行查看 2. 常见属性 CGSize contentSize :设置UIScrollView的滚动范围 CGPoint co...

哥特复心
2013/11/27
0
0
iOS开发之代理设计模式

一、代理设计模式的作用: -当A对象要监听B对象的一些行为时,A成为B的代理; -当B对象要通知A对象一些事情时,A成为B的代理。 比如UIScrollView和UITableView,当控制器要监听scrollview的滚...

shenhuniurou
2016/03/21
38
0
Masonry的约束的实用方法大全

Masonry的约束的常用方法 是一个轻量级的布局框架,它拥有自己的描述语法(采用更优雅的链式语法封装)来自动布局,具有很好可读性且同时支持等。 总之,对于侧重写代码的coder,请你慢慢忘记...

小王爷还小
2016/11/18
10
0
01-UI基础-04-00-UIScrollView

继承关系 1、 基本概念 1.1 什么是UIScrollView 移动设备的屏幕大小是有限的,现在直接展示用户眼前的内容也相当有限 砀山是的内容较多,超出一个屏幕时,用户可通过滚动手势来查看屏幕以为的...

口十耳
2016/01/04
10
0
iOS之[UIScrollView属性、代理详解]

1.属性 2.UIScrollViewDelegate 滚动+缩放 ====================================================================== 滑动 减速(decelerating)动画 滑动结束后会有减速过程。注:在 didEnd......

言筱羽
2016/01/05
103
0
UI 基础----UIScrollView 的基本属性使用以及代理的使用方法

咱们先来介绍几个 UIScrollView 的基本属性 •@property(nonatomic) CGPoint contentOffset; 这个属性用来表示UIScrollView滚动的位置 •@property(nonatomic) CGSize contentSize; 这个属性...

周绪刚
2016/01/03
56
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

rabbitmq学习记录(三)

工作队列:一个生产者,多个消费者,生产者直接将消息发送到rabbitmq的队列之中 默认采用的是轮询分配:即不管消费者处理信息的效率,队列给所有消费者轮流发送一条信息,直至消息发送完毕 ...

人觉非常君
22分钟前
0
0
Java 之 反射

反射,剖析 Java类 中的 各个组成部分,映射成 一个个 Java对象,多用于 框架和组件,写出复用性高的通用程序。 测试类代码如下: class Person { private String name; public St...

绝世武神
25分钟前
0
0
华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大

华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大!华为nova3超级慢动作酷玩抖音,没有办法我就是这么强大! 在华为最新发布的nova 3手机上,抖音通过华为himedia SDK集成了60fps、超级...

华为终端开放实验室
31分钟前
0
0
多 SSH Key 实现同一台服务器部署多 Git 仓库

本文以以下需求为背景,介绍详细的做法: 需在同一台服务器同时部署两个不同的 Github 仓库(对 Bitbucket 等 git 服务同样适用) root 用户可在远程登录 SSH 后附上预期的 SSH Key 进行 gi...

yeahlife
33分钟前
0
0
003. es6数值的扩展

一、普通扩展 Number 方法,将字符串、数值转为十进制 : Number('0b111') Number.isFinite() 用来检查一个数值是否为有限的:Number.isFinite(15) Number.isNan() 用来检查一个值是否为NaN N...

秋季长青
47分钟前
0
0
C语言数组和指针的语法糖

对于C语言,我可以这样秀:比如当创建一个数组arr[n]之后,一般我们去遍历数组的时候是for (int i = 0; i < n; i++) { a[i]; }但是我知道下表访问符[]是个语法糖,也就是说a[i]在编译器看来是...

ustbgaofan
56分钟前
0
0
Call to undefined function bcmath()的解决方法

乐意黎的ECS主机环境,Centos7.2 + PHP7 由于使用了bcdiv()函数,运行时总在抛错。 Fatal error: Call to undefined function bcmath() in /usr/loca/apache/htdocs/... on line 4 一查得知:......

dragon_tech
今天
0
0
css优先级

..

architect刘源源
今天
0
0
【转】Twitter的分布式自增ID算法snowflake

结构 snowflake的结构如下(每部分用-分开): 0 - 0000000000 0000000000 0000000000 0000000000 0 - 00000 - 00000 - 000000000000 第一位为未使用,接下来的41位为毫秒级时间(41位的长度可以...

talen
今天
0
0
hive支持行级修改

Hive从0.14版本开始支持事务和行级更新,但缺省是不支持的,需要一些附加的配置。要想支持行级insert、update、delete,需要配置Hive支持事务。 一、Hive具有ACID语义事务的使用场景 1. 流式...

hblt-j
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部