美文网首页
UIScrollView滚动视图高级功能、协议方法

UIScrollView滚动视图高级功能、协议方法

作者: 李琪_59dc | 来源:发表于2017-10-12 16:00 被阅读0次
    • .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(@"视图停止移动");
    }
    

    相关文章

      网友评论

          本文标题:UIScrollView滚动视图高级功能、协议方法

          本文链接:https://www.haomeiwen.com/subject/vecoyxtx.html