UIScrollView 原理详解
UIScrollView 原理详解
Ios基础语法 UIScrollView
UIScrollView 原理详解
2010-12-2411:05
阅读数:7807
单独窗口打印放大字号缩小字号
[touchesShouldBegin:withEvent:inContentView: 决定自己是否接收 touch 事件
pagingEnabled:当值是 YES 会自动滚动到 subview 的边界,默认是NO
touchesShouldCancelInContentView: 开始发送 tracking messages 消息给 subview 的时候调用这个方法,决定是否发送 tracking messages 消息到subview。假如返回 NO,发送。YES 则不发送。
假如 canCancelContentTouches属性是NO,则不调用这个方法来影响如何处理滚动手势。]( “分享到网易微博”)
[ scroll view 还处理缩放和平移手势,要实现缩放和平移,必须实现委托 viewForZoomingInScrollView:、scrollViewDidEndZooming:withView:atScale:
两个方法。另外 maximumZoomScale和minimumZoomScale 两个属性要不一样。]( “分享到网易微博”)
[tracking
当 touch 后还没有拖动的时候值是YES,否则NO]( “分享到网易微博”)
[zoomBouncing
当内容放大到最大或者最小的时候值是 YES,否则 NO]( “分享到网易微博”)
[zooming
当正在缩放的时候值是 YES,否则 NO]( “分享到网易微博”)
[decelerating
当滚动后,手指放开但是还在继续滚动中。这个时候是 YES,其它时候是 NO]( “分享到网易微博”)
[decelerationRate
设置手指放开后的减速率]( “分享到网易微博”)
[maximumZoomScale
一个浮点数,表示能放最大的倍数]( “分享到网易微博”)
[minimumZoomScale
一个浮点数,表示能缩最小的倍数]( “分享到网易微博”)
[pagingEnabled
当值是 YES 会自动滚动到 subview 的边界。默认是NO]( “分享到网易微博”)
[scrollEnabled
决定是否可以滚动]( “分享到网易微博”)
[delaysContentTouches
是个布尔值,当值是 YES 的时候,用户触碰开始,scroll view要延迟一会,看看是否用户有意图滚动。假如滚动了,那么捕捉 touch-down 事件,否则就不捕捉。假如值是NO,当用户触碰, scroll view 会立即触发 touchesShouldBegin:withEvent:inContentView:,默认是 YES]( “分享到网易微博”)
[canCancelContentTouches
当值是 YES 的时候,用户触碰后,然后在一定时间内没有移动,scrollView 发送 tracking events,然后用户移动手指足够长度触发滚动事件,这个时候,scrollView 发送了 touchesCancelled:withEvent: 到 subview,然后 scroView 开始滚动。假如值是 NO,scrollView 发送 tracking events 后,就算用户移动手指,scrollView 也不会滚动。]( “分享到网易微博”)
[contentSize
里面内容的大小,也就是可以滚动的大小,默认是0,没有滚动效果。]( “分享到网易微博”)
[showsHorizontalScrollIndicator
滚动时是否显示水平滚动条]( “分享到网易微博”)
[showsVerticalScrollIndicator
滚动时是否显示垂直滚动条]( “分享到网易微博”)
[bounces
默认是 yes,就是滚动超过边界会反弹有反弹回来的效果。假如是 NO,那么滚动到达边界会立刻停止。]( “分享到网易微博”)
[bouncesZoom
和 bounces 类似,区别在于:这个效果反映在缩放上面,假如缩放超过最大缩放,那么会反弹效果;假如是 NO,则到达最大或者最小的时候立即停止。]( “分享到网易微博”)
[directionalLockEnabled
默认是 NO,可以在垂直和水平方向同时运动。当值是 YES 时,假如一开始是垂直或者是水平运动,那么接下来会锁定另外一个方向的滚动。 假如一开始是对角方向滚动,则不会禁止某个方向]( “分享到网易微博”)
[indicatorStyle
滚动条的样式,基本只是设置颜色。总共3个颜色:默认、黑、白]( “分享到网易微博”)
[scrollIndicatorInsets
设置滚动条的位置]( “分享到网易微博”)
-(void)scrollViewDidScroll:(UIScrollView*)aScrollView {
CGPoint offset = aScrollView.contentOffset;
CGRect bounds = aScrollView.bounds;
CGSize size = aScrollView.contentSize;
UIEdgeInsets inset = aScrollView.contentInset;
float y = offset.y + bounds.size.height - inset.bottom;
float h = size.height;
// NSLog(@"offset: %f", offset.y);
// NSLog(@"content.height: %f", size.height);
// NSLog(@"bounds.height: %f", bounds.size.height);
// NSLog(@"inset.top: %f", inset.top);
// NSLog(@"inset.bottom: %f", inset.bottom);
// NSLog(@"pos: %f of %f", y, h);
float reload_distance =10;
if(y ]]
>
h + reload_distance){
NSLog(@"load more rows");
}}

