UIScrollView的属性总结

来源:互联网 发布:淘宝店铺免费装修教程 编辑:程序博客网 时间:2024/06/06 03:04
UIScrollView的属性总结
属性作用CGPoint contentOffSet监控目前滚动的位置CGSize contentSize滚动范围的大小UIEdgeInsets contentInset视图在scrollView中的位置id
delegate设置协议BOOL directionalLockEnabled指定控件是否只能在一个方向上滚动BOOL bounces控制控件遇到边框是否反弹BOOL alwaysBounceVertical控制垂直方向遇到边框是否反弹BOOL alwaysBounceHorizontal控制水平方向遇到边框是否反弹BOOL pagingEnabled控制控件是否整页翻动BOOL scrollEnabled控制控件是否能滚动BOOL showsHorizontalScrollIndicator控制是否显示水平方向的滚动条BOOL
showsVerticalScrollIndicator控制是否显示垂直方向的滚动条UIEdgeInsets scrollIndicatorInsets指定滚动条在scrollerView中的位置UIScrollViewIndicatorStyle
indicatorStyle设定滚动条的样式float decelerationRate改变scrollerView的减速点位置BOOL tracking监控当前目标是否正在被跟踪BOOL dragging监控当前目标是否正在被拖拽BOOL decelerating监控当前目标是否正在减速BOOL delaysContentTouches控制视图是否延时调用开始滚动的方法BOOL canCancelContentTouches控制控件是否接触取消touch的事件float minimumZoomScale缩小的最小比例float maximumZoomScale放大的最大比例float zoomScale设置变化比例BOOL bouncesZoom控制缩放的时候是否会反弹BOOL zooming判断控件的大小是否正在改变BOOL zoomBouncing判断是否正在进行缩放反弹BOOL scrollsToTop控制控件滚动到顶部

这里把UIScrollView的几个要点总结下:

从你的手指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事件不会再发生。

OSUIScrollView代理方法有很多,从头文件中找出来学习一下


//只要滚动了就会触发

-(void)scrollViewDidScroll:(UIScrollView *)scrollView;  

{

//   NSLog(@" scrollViewDidScroll");

   NSLog(@"ContentOffset x is  %f,yis%f",scrollView.contentOffset.x,scrollView.contentOffset.y);

}

//开始拖拽视图

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

{

  NSLog(@"scrollViewWillBeginDragging");

}

//完成拖拽

-(void)scrollViewDidEndDragging:(UIScrollView *)scrollViewwillDecelerate:(BOOL)decelerate; 

{

  NSLog(@"scrollViewDidEndDragging");

}

//将开始降速时

-(void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView;  

{

  NSLog(@"scrollViewWillBeginDecelerating");

}


//减速停止了时执行,手触摸时执行执行

-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView;  

{

  NSLog(@"scrollViewDidEndDecelerating");

}

//滚动动画停止时执行,代码改变时出发,也就是setContentOffset改变时

-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView;

{

  NSLog(@"scrollViewDidEndScrollingAnimation");

}

//设置放大缩小的视图,要是uiscrollview的subview

-(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView;  

{

  NSLog(@"viewForZoomingInScrollView");

   return viewA;

}

//完成放大缩小时调用

-(void)scrollViewDidEndZooming:(UIScrollView *)scrollViewwithView:(UIView *)viewatScale:(float)scale; 

{

   viewA.frame=CGRectMake(50,0, 100, 400);

  NSLog(@"scale between minimum and maximum. calledafter any 'bounce' animations");

}//scale between minimum and maximum. called after any 'bounce'animations


//如果你不是完全滚动到滚轴视图的顶部,你可以轻点状态栏,那个可视的滚轴视图会一直滚动到顶部,那是默认行为,你可以通过该方法返回NO来关闭它

-(BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView;  

{

  NSLog(@"scrollViewShouldScrollToTop");

  return YES;

}


-(void)scrollViewDidScrollToTop:(UIScrollView*)scrollView;    

{

   NSLog(@"scrollViewDidScrollToTop");

}