- .userInteractionEnabled 是否允许通过点击屏幕让滚动视图响应事件
YES接收触碰事件
NO不接受 - .contentOffset 滚动视图画布的移动位置,决定画布显示的最终图像效果
- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated;
让滚动视图移动到指定的位置,动画移动,一般在touchesBegan方法中设置 -
scrollViewWillBeginDragging:(UIScrollView *)scrollView
滚动视图即将开始被拖动时调用 - (void) scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate;
当滚动视图结束拖动时调用此函数 - (void) scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
滚动视图即将结束拖动时调用 - (void) scrollViewWillBeginDecelerating:(UIScrollView *)scrollView
视图即将开始减速时调用 - (void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView
视图已经结束减速时期,视图停止的瞬间调用
具体使用:
//声明文件中声明成员变量
@interface ViewController : UIViewController <UIScrollViewDelegate> {
UIScrollView* _scrollView;
}
@end
//实现文件中
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//创建滚动视图
_scrollView =[[UIScrollView alloc]init];
//设定滚动视图的位置
_scrollView.frame=CGRectMake(10, 50, 300, 400);
//取消弹动效果
_scrollView.bounces=NO;
//是否允许通过点击屏幕让滚动视图响应事件
// YES:滚动视图可以接受触碰事件
// NO:不接受触碰事件
// _scrollView.userInteractionEnabled=NO;
_scrollView.userInteractionEnabled=YES;
//设置画布的大小,纵向效果
_scrollView.contentSize=CGSizeMake(300, 400*9);
for(int i=0;i<10;i++){
//生成图片名称
NSString* strName =[NSString stringWithFormat:@"icon%d",i+1];
UIImage *image = [UIImage imageNamed:strName];
//创建图像视图对象
UIImageView * iView = [[UIImageView alloc]init];
//图像赋值
iView.image=image;
//设置图像视图在滚动视图画布中的位置
iView.frame=CGRectMake(0, 400*i, 300, 400);
[_scrollView addSubview:iView];
}
[self.view addSubview:_scrollView];
//取消按页滚动效果
_scrollView.pagingEnabled=NO;
// _scrollView.pagingEnabled=YES;
//滚动视图画布的移动位置,偏移位置
//功能:决定画布显示的最终图像结果
_scrollView.contentOffset=CGPointMake(0,0);
//当前视图控制器作为代理对象
_scrollView.delegate=self;
}
-(void) touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
// _scrollView.contentOffset=CGPointMake(0, 0);//点击空白处,直接跳到设定的坐标位置
//让滚动视图移动到指定位置,动画移动
[_scrollView scrollRectToVisible:CGRectMake(0, 0, 300, 400) animated:YES];
}
//当滚动视图移动时,只要offset坐标发生变化,都会调用此函数
//参数:调用此协议的滚动视图对象
//可以使用此函数来监控滚动视图的位置
- (void) scrollViewDidScroll:(UIScrollView *)scrollView{
NSLog(@"Y=%f",scrollView.contentOffset.y);
}
//当滚动视图结束拖动时调用此函数
- (void) scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
NSLog(@"Did End Drag");
}
//滚动视图即将开始被拖动时
-(void) scrollViewWillBeginDragging:(UIScrollView *)scrollView{
NSLog(@"WillBeginDrag");
}
//视图即将结束拖动时调用
-(void) scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
NSLog(@"Will End Drag");
}
//视图即将减速时调用
-(void) scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
NSLog(@"Will Begin Decelerating");
}
//视图已经结束减速时调用,视图停止的瞬间调用
-(void) scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
NSLog(@"视图停止移动");
}