• iOS-UIScrollView的使用


    #import "ViewController.h"
    
    @interface ViewController ()<UIScrollViewDelegate>
    {
        UIImageView *imgView;
    }
    @end
    
    @implementation ViewController
    
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        
    #pragma mark 课程要点
        /*
         
         * UIScrollView的概念
          
         * UIScrollView的重要属性
         
         * 解决登录注册界面的一个常见问题
         
         * UIScrollView常用属性
         
         * 利用scrollView放大图片
    
         */
    
        
    #pragma mark UIScrollView的概念
        /*
         *  UIScrollowView是一个能够滚动的试图控件
         
         *  UIScrollowView继承于UIView
         
         *  通过滚动来显示更多的内容
         
         *  举例:手机的设置界面
         */
        
        //创建UI控件的三步走
        
        UIScrollView *scrollowView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 66, 320, 400)];
        scrollowView.backgroundColor = [UIColor grayColor];
        
        //测试View
       UIView *view = [[UIView alloc]initWithFrame:CGRectMake(50, 50, 270, 430)];
        view.backgroundColor = [UIColor redColor];
        [scrollowView addSubview:view];
        
        //测试View1
        UIView *view1 = [[UIView alloc]initWithFrame:CGRectMake(0,0,50, 50)];
        view1.backgroundColor = [UIColor yellowColor];
        [scrollowView addSubview:view1];
    
        //将控制器自带的view更换为scrollowView
        self.view = scrollowView;
        
        //至此运行一下,试着滚动屏幕,会发现效果跟UIView一样,不要急,继续往下看。
    
    
    #pragma mark UIScrollowView的常用属性
        
        /*
         
         * contentSize
         
         * contentSize表示UIScrollView内容的尺寸,默认为(0,0)
         
         * UIScrollowView的frame与contentSize的关系
         
         * frame的可以理解为一面镜子,contentSize可以理解为小明的脸。
         
         * 如果镜子的尺寸小于小明脸的尺寸,咱们照镜子的时候就需要来回移动脸部,以保证看完整个脸部
         
         * 如果镜子的尺寸大于等于小明脸的尺寸,此时小明不需要移动就能看完整个脸部。
         
         */
    
    
    //   scrollowView.contentSize = CGSizeMake(420, 500);
    
        /*
         * contentOffset是scrollview当前显示区域顶点相对于frame顶点的偏移量,默认为(0,0)
    
         * 不设这个值的话,UIScrollView不滑动的话就默认从(0,0)开始显示,设置这个值以后,咱就能控制UIScrollow在滑动之前显示scroollview的哪一部分。
    
         * 就好比小明拿个手掌大的小镜子,他想直接看到鼻子上是否有痘痘,通过设置contentOffset能够立马定位到鼻子。
    
         */
        //这样设置完以后,就会直接使红色在左上角
    //    scrollowView.contentOffset = CGPointMake(50,50);
    
    
        /*
         * contentInset能够在UIScrollView的4周增加额外的滚动区域
         *
         */
    //    scrollowView.contentInset = UIEdgeInsetsMake(20, 20, 20,20);
    
        //PS:contentInset具体的用法,在下面的这个例子有更为直观的体现
    
    #pragma mark 解决登录注册界面的一个常见问题
        
        /*
         * 新建一个工程,将下面注释的代码,粘贴在首页控制器的viewDidLoad方法里。
         */
    
        //
        //    UIScrollView *scrollow = [[UIScrollView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];
        //
        //    //给UIScorllView设置内容大小
        //    scrollow.contentSize = CGSizeMake(320, 480);
        //
        //    //给UIScrollView增加滚动区域,254是键盘的高度
        //    scrollow.contentInset = UIEdgeInsetsMake(0, 0, 254, 0);
        //    scrollow.backgroundColor = [UIColor redColor];
        //
        //    self.view = scrollow;
        //
        //    UITextField *textFiled = [[UITextField alloc]initWithFrame:CGRectMake(0, 420, 100, 60)];
        //
        //    textFiled.backgroundColor = [UIColor grayColor];
        //
        //    [scrollow addSubview:textFiled];
        //
        //    UITextField *textFiled1 = [[UITextField alloc]initWithFrame:CGRectMake(0, 100, 100, 60)];
        //
        //    textFiled1.backgroundColor = [UIColor grayColor];
        //    
        //    [scrollow addSubview:textFiled1];
        
    #pragma mark UIScrllView常用属性
        
        //是否显示横向滚动条
        scrollowView.showsHorizontalScrollIndicator = YES;
        //是否显示纵向滚动条
        scrollowView.showsVerticalScrollIndicator = NO;
        
        //测试view2
        UIView *view2 = [[UIView alloc]initWithFrame:CGRectMake(320*3, 0, 320, 480)];
        view2.backgroundColor = [UIColor blueColor];
        [scrollowView addSubview:view2];
        
        //将实际内容的宽设置为屏幕宽的四倍,高还是屏幕的高
        scrollowView.contentSize = CGSizeMake(320*4, 480);
        
        //将内容分页显示
        scrollowView.pagingEnabled = YES;
        
    
        
        //是否需要弹簧效果
        scrollowView.bounces = YES;
        
        //设置scroll能否滚动
        scrollowView.scrollEnabled = YES;
        
    #pragma mark 利用scrollView放大图片
        
    //    //将之前放在scrollView上的所有试图移除掉
    //    [view removeFromSuperview];
    //    [view1 removeFromSuperview];
    //    [view2 removeFromSuperview];
    //    
    //    //放上去一个图片
    //    UIImage *img = [UIImage imageNamed:@"美女.JPG"];

    //    imgView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)];
    //    imgView.image = img;
    //    scrollowView.contentSize = CGSizeMake(img.size.width, img.size.height);
    //    
    //    [scrollowView addSubview:imgView];
    //    
    //    
    //    scrollowView.maximumZoomScale=10.0;//最大倍率(默认倍率)
    //    scrollowView.minimumZoomScale=1.0;//最小倍率(默认倍率)
    //    scrollowView.decelerationRate=5.0;//减速倍率(默认倍率)
    //    
    //    scrollowView.delegate = self;
    }
    
    //告知要放大哪个试图
    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
    {
        return imgView;
    }
  • 相关阅读:
    ES7/ES8 语法学习
    JavaScript中this对象原理简洁说明
    浅谈http协议
    各个浏览器之间常见的兼容性问题
    npm -v 报错:cannot find module 'core-util-is'
    对象遍历的几种方法
    Vue项目如何关闭Eslint检测
    axios 基本运用
    如何去掉vue路由中的#
    vue 父子组件、兄弟组件传值
  • 原文地址:https://www.cnblogs.com/liuzhi20101016/p/5035886.html
Copyright © 2020-2023  润新知