UIScrollView的仔细的研究API的记录

本文详细解析了UIScrollView的各种属性及其工作原理,包括contentInset、directionalLockEnabled、bounces等配置选项的作用,以及scrollRectToVisible等方法的使用场景。

contentInset 出现的区域,比如说开始设置的时屏幕大小,但是如果你设置这个,真实显示的以这个为准

directionalLockEnabled 默认no,意思是说在图片可以上下左右直接滑动(如果scrollview允许的情况下),如果为yes,图片只能在上下或者左右滑动。

bounces 是否反弹

alwaysBounceVertical alwaysBounceHorizontal 两个方向的反弹
表默认的垂直方法为yes(有反弹),水平方向为no
scrollview默认都是no。
这两个属性使用的大前提事bounces必须为yes

scrollEnabled 控制scrollview是否能滚动

showsHorizontalScrollIndicator
showsVerticalScrollIndicator 是否显示边上移动线

scrollIndicatorInsets 滑动线的位置自己定义

indicatorStyle 滚动条的样式(白色,黑色)

decelerationRate 速率变慢

  • (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated; 让scrollview滑动到rect。用在想让控件点击一下显示完全控件思想(要想生效, contentSize的x,y都不能为0)

flashScrollIndicators 这是一个方法,闪一下滚动条,可以看见是否还能滚动

tracking 是一个只读的书行,看手指是否在触摸屏幕。如果在触摸返回yes,如果没有返回no

dragging 只读,看手指是否在拖拽

decelerating 只读,是否在减速 只有手指离开屏幕时(减速)才会返回yes,只要手指还在作用屏幕,会一直返回no

delaysContentTouches 很好的一个东西。系统默认的yes 意思是如果你在滑动,那么触摸事件只会传递给scrollview。在滑动中你去点击scrollview的按钮不会响应按钮的方法。 如果设置为no,触摸事件会给你手指触摸到的的控件,如果是不能响应点击手势的控件没啥区别,如果控件可以响应手势那触摸的事件就会只传给你点着的那个控件。

canCancelContentTouches 没看懂??????????????
这个是别人的见解,明天再看这个canCancelContentTouches属性

从你的手指touch屏幕开始,scrollView开始一个timer,如果:

1.  150ms内如果你的手指没有任何动作,消息就会传给subView。

2.  150ms内手指有明显的滑动(一个swipe动作),scrollView就会滚动,消息不会传给subView,这里就是产生问题二的原因。

3. 150ms内手指没有滑动,scrollView将消息传给subView,但是之后手指开始滑动,scrollView传送touchesCancelled消息给subView,然后开始滚动。

观察下tableView的情况,你先按住一个cell,cell开始高亮,手不要放开,开始滑动,tableView开始滚动,高亮取消。


delaysContentTouches的作用:

这个标志默认是YES,使用上面的150ms的timer,如果设置为NO,touch事件立即传递给subView,不会有150ms的等待。


cancelsTouches的作用:

这个标准默认为YES,如果设置为NO,这消息一旦传递给subView,这scroll事件不会再发生。

bouncesZoom 缩放的时候是否会反弹

zooming 只读 如果在缩放返回真

zoomBouncing 只读 判断是否正在进行缩放反弹

scrollsToTop 点击屏幕顶部控件回到顶部

keyboardDismissMode scrollview滑动的时候键盘的状态,有几种选择

键盘的三种状态
UIScrollViewKeyboardDismissModeNone,不消失
UIScrollViewKeyboardDismissModeOnDrag, 当拖拽scrollview时消失
UIScrollViewKeyboardDismissModeInteractive 不好解释,如果自己能实验一下最好,大概就是下拉的时候如果到边了,开始bounces了,键盘会随着下去

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值