zoukankan      html  css  js  c++  java
  • iOS中的UIScorllView(滑动控件,时机控制)的基本使用

    #import "RootViewController.h"
    #define kScreenWidth [UIScreen mainScreen].bounds.size.width
    #define kScreenHeight [UIScreen mainScreen].bounds.size.height
    @interface RootViewController () <UIScrollViewDelegate>
    
    @end
    
    @implementation RootViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        /**
          UIScorllView 滑动控件的基类,可以支持滚动,用于当内容页区域大于可视区域大小时,可以通过滚动来查看整个内容区域,他的UITableView,UITextView的父类
       
         
         */
        //1.创建控件
        UIScrollView *scrolView = [[UIScrollView alloc] initWithFrame:CGRectMake(20, 30, kScreenWidth - 20 *2, kScreenHeight - 30 * 2)];
    
        //2.配置属性
        scrolView.backgroundColor = [UIColor redColor];
        //1设置内容页的大小
        scrolView.contentSize = CGSizeMake(scrolView.bounds.size.width, scrolView.bounds.size.height);
        //2设置偏移量
        scrolView.contentOffset = CGPointMake(400, 0);
        //3隐藏欢动指示器
    //    scrolView.showsHorizontalScrollIndicator = NO; //水平
    //    scrolView.showsVerticalScrollIndicator = NO; // 竖直
        //4控制scrollView能否滑动
        scrolView.scrollEnabled = YES;
        //5方向锁,控制滑动时只能单方向滑动
        scrolView.directionalLockEnabled = NO;
        //6控制点击状态条时,scroll是否可以回到顶部,y的偏移量为0;
        scrolView.scrollsToTop = YES;
        //7控制当前内容页到边界是,是否具有弹跳效果.
        scrolView.bounces = YES;
        //8控制即使内容页区域大小 小于等于 scrollView大小时,依然有反弹效果
        scrolView.alwaysBounceHorizontal = YES;
        
       //9代理
        /**
         *  对于协议和代理的使用步骤:(一对多  --- 一个代理对象可以做多个任务(方法))
         1.针对自定义协议:
            1>自定义协议(存放让代理实现的任务,分为可选和必须实现)
            2>定义代理属性(用于存储代理对象,id类型 --要服从协议,语义特性为assign)
            3>在其他文件中为该类设置代理(指定任务由谁完成)
            4>让代理对象所属的类服从协议(答应干活)
            5>代理对象实现协议中的方法(制定任务完成的细节)
            6>委托方通知代理去执行协议中的方法,(让代理干活)
         2.无需自定义协议:
            1>在其他类中为该类指定代理(指定任务由谁来做)
            2>让代理对象所属的类服从协议(代理答应任务由他来做)
            3>代理对象实现协议中的方法(制定任务完成的细节)
         */
        scrolView.delegate = self;
        
        //10和缩放视图有关的的属性
        scrolView.minimumZoomScale = 1.0;
        scrolView.maximumZoomScale = 4.0;
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        
        //3.添加到父视图
        [self.view addSubview:scrolView];
        
        //4.释放
        [scrolView release];
        //添加到UIImageView
        UIImageView *imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"3.jpg"]];
        imageView.tag = 200;
        imageView.userInteractionEnabled = YES;
        imageView.frame = CGRectMake(0 , 0, scrolView.contentSize.width, scrolView.contentSize.height);
        [scrolView addSubview:imageView];
        [imageView release];
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    /*
    #pragma mark - Navigation
    
    
    */
    //只要拖拽就会触发,拖拽改变偏移量
    - (void)scrollViewDidScroll:(UIScrollView *)scrollView
    {
       //打印偏移量
       // NSLog(@"offst = %@",NSStringFromCGPoint(scrollView.contentOffset));
    
        
    }
    // any offset changes    Zoom缩放
    //只要缩放就会触发,改变大小
    - (void)scrollViewDidZoom:(UIScrollView *)scrollView {
       //打印内容页的大小
        NSLog(@"contentSize = %@",NSStringFromCGSize(scrollView.contentSize));
    }
    
    //当scrollView将要拖拽时,此时手指刚刚接触到屏幕
    - (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
    {
       //滑动结束  回到最左边
        [scrollView setContentOffset:CGPointZero animated:YES];
    }
    
    //当scrollView 开始加速时触发,此时手指已经离开视图(不一定触发,有加速过程才会触发该方法)
    - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset{
        
    }
    // called on finger up if the user dragged. decelerate is true if it will continue moving afterwards
    //当scrollView减速结束是触发,已经停止滑动
    - (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
    {
        
    }
    //当scrollView将要结束拖拽是接触
    - (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
        
    }// called on finger up as we are moving
    //当scrollView计数拖拽时触发,此时手指已经离开视图
    - (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
        
    }// called when scroll view grinds to a halt
    
    //当滑动scrollView ,并且动画结束时触发(前提是必须要有动画效果)
    - (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView{
        
    }// called when setContentOffset/scrollRectVisible:animated: finishes. not called if not animating
    //返回需要缩放的视图,但是只能是scrollView的子视图
    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{
         NSLog(@"%s,%d",__FUNCTION__ , __LINE__);
        return [scrollView viewWithTag:200];
    }
    //当将要开始缩放时触发
    - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view{
        
    }
    //缩放结束时触发
    - (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
    {
        
    }
    //当scrollsToTop属性设置为YES时,通过该方法进一步询问,点击状态条是否可以回到顶部
    - (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView{
         NSLog(@"%s,%d",__FUNCTION__ , __LINE__);
        return YES;
    }// return a yes if you want to scroll to the top. if not defined, assumes YES
    //当点击状态条,scrollView回到顶部时触发
    - (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView{
         NSLog(@"%s,%d",__FUNCTION__ , __LINE__);
    }// called when scrolling animation finished. may be called immediately if already at top
    
    @end
  • 相关阅读:
    Python Scarpy安装包
    pip install 出现报asciii码错误的问题
    pyhton 27 pip命令无法使用 没有Scripts文件夹 的解决方法
    北漂
    15再见,16你好。
    selenium By.xpath 用法
    java.util.NoSuchElementException解决办法
    Android版之数据库增删改查图书信息
    Android studio连接sqlserver数据库
    Android简易版图书管理系统
  • 原文地址:https://www.cnblogs.com/wohaoxue/p/4764667.html
Copyright © 2011-2022 走看看