UIScrollView

UIScrollView

首先UIScrollView继承自UIView实现了NSCoding协议.作用是显示多于一个屏幕的内容。他有子类UITableView UItextView UIWebView 

。在我的理解中,我把UIScrollView看成是具有上下两层的一个复合视图,frame控制着上层的大小,我们看到的UIScrollView的大小实际就是frame的大小,上层固定不动,显示的变化,由下层的滚动来控制。而下层滚动的区域的大小,就是由contentSize来控制的了。例如:若frame = (0, 0, 320, 480) contentSize = (320, 960),代表本UIScrollView可以上下滚动,滚动区域为frame大小的两倍。

 

基本属性

CGPoint contentOffSet  当前滚动的位置,这个属性的概念是我现在contentSize说显示的和初始时候的偏移量,视图超过scrollView的位置

CGSize contentSize   我整个要呈现的内容的大小(10001460

BOOL directionalLockEnable 指定控件是否只能在一个方向上滚动

BOOL bounces  设定遇到边框是否反弹

BOOL alwaysBounceVertical  控制垂直方向上遇到边框是否反弹

BOOL alwaysBounceHorizontal 控制水平方向上遇到边框是否反弹

BOOL pagingEnabled  控制控件是否可以整页翻动

BOOL scrollEnabled   控制控件是否可以滚动

BOOL showsHorizontalScrollIndicator 控制是否显示水平滚动条

BOOL showsVerticalScrollIndicator 控制是否显示垂直滚动条

UIEdgeInsets  scrollIndicatorInsets 指定滚动条在scrollerView中的位置

UIScrollView  IndicatorStyleindicatorStyle 设定滚动条的样式

float decelerationRate    设定scrollView的减速速率

BOOL tracking   监控scrollView是否正在被跟踪

BOOL dragging  当前scrollView是否被拖拽

BOOL decelerating  监控当前scrollView是否正在减速

BOOL delaysContentTouchs 控制视图是否延时调用开始滚动的方法

BOOL canCancelContentTouches控制控件是否接触取消touch的事件

float minimumZoomScale  缩小的最小比例

float maximumZoomScale  放大的最大比例

float zoomScale  控制缩放的时候的变化比例

BOOL bouncesZoom  控制缩放的时候是否会反弹

BOOL zooming 判断控件是否正在缩放 大小是否正在改变

BOOL 控制控件滚动到底部

 

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

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

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

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

3. 150ms内手指没有滑动,scrollView将消息传给subView,但是之后手指开始滑动,scrollView传送touchesCancelled消息给subView,然后开始滚动。观察下tableView的情况,你先按住一个cellcell开始高亮,手不要放开,开始滑动,tableView开始滚动,高亮取消。

 delaysContentTouches的作用:这个标志默认是YES,使用上面的150mstimer,如果设置为NOtouch事件立即传递给subView,不会有150ms的等待。cancelsTouches的作用:这个标准默认为YES,如果设置为NO,这消息一旦传递给subView,这scroll事件不会再发生。

//只要滚动了就会触发

- (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 *)scrollView willDecelerate:(BOOL)decelerate; 

{

   NSLog(@"scrollViewDidEndDragging");

}

//将开始降速时

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

{

   NSLog(@"scrollViewWillBeginDecelerating");

}

 

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

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

{

   NSLog(@"scrollViewDidEndDecelerating");

}

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

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

{

   NSLog(@"scrollViewDidEndScrollingAnimation");

}

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

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

{

   NSLog(@"viewForZoomingInScrollView");

    return viewA;

}

//完成放大缩小时调用

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale; 

{

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

   NSLog(@"scale between minimum and maximum. called after 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");

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值